C/C++文字列reverseまとめ
文字列reverseのいくつかの操作をまとめます.C++スタイルも含まれています.
一つの考えは、tmpの首尾swapをその場で利用することです.char*もStringも同じです.
char*
String
また、copyの元の文字列を先にcopyし、copyの後の尾をloopが終わるまでソース列の頭を覆うだけで似ている.この効率は上より低い
また、あるブロガーのテストで最も効率的なシステムを直接呼び出すreverse関数もあり、実質的には先頭文字を交換します.
ブロガーテストでは、呼び出しシステムが最も速く、また符号化速度も考慮しなければならないので、コードの実行効率だけでなく、私たちの効率、特に時間制限のある面接でもコードを書くことができます.次は私が基本的に最後の1種を選ぶことに出会って、char*のも先にStringを回転して、例えば
char *a;
String str=a;
string回転char*このように回転しますがconst char*です
char *a=str.c_str();
以上、ブログを参考にしましたhttp://bbs.csdn.net/topics/360161087
一つの考えは、tmpの首尾swapをその場で利用することです.char*もStringも同じです.
char*
void Reverse(char *word) // C
{ // C++ Primer Plus forstr2.cpp -- reversing an array
char temp;
size_t i, j;
for (j = 0, i = strlen(word) - 1; j < i; --i, ++j) {
temp = word[i];
word[i] = word[j];
word[j] = temp;
}
}
String
void Reverse(String& str)
{
char tmp;
int len=str.size();
for(int i=0;i
また、copyの元の文字列を先にcopyし、copyの後の尾をloopが終わるまでソース列の頭を覆うだけで似ている.この効率は上より低い
また、あるブロガーのテストで最も効率的なシステムを直接呼び出すreverse関数もあり、実質的には先頭文字を交換します.
void Reverse(String& str)
{
reverse(str.begin(),str.end());
// STL reverse()
/* template
* void reverse(BidirectionalIterator first, BidirectionalIterator last)
* {
* while ((first != last) && (first != --last))
* swap(*first++, *last);
* }
*/
}
ブロガーテストでは、呼び出しシステムが最も速く、また符号化速度も考慮しなければならないので、コードの実行効率だけでなく、私たちの効率、特に時間制限のある面接でもコードを書くことができます.次は私が基本的に最後の1種を選ぶことに出会って、char*のも先にStringを回転して、例えば
char *a;
String str=a;
string回転char*このように回転しますがconst char*です
char *a=str.c_str();
以上、ブログを参考にしましたhttp://bbs.csdn.net/topics/360161087