#include
#include
#include
#include
#include
using namespace std;
/*\ 1.
翻轉句子中的單詞
題目:輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。
句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。
例如輸入「i am a student.」,則輸出「student. a am i」。 */
void reverseword()
/* 2. 第乙個只出現一次的字元
例如abcaccd 輸出b
解題思路:利用hash思想,字元一共256個,則建立乙個大小為256的數字 */
int getfirstnorepeatch()
} return 0; }
/* 3
把字串轉化為數字
題目不難,但是考察程式設計習慣,比如判斷正負號,是否為數字字元,是否越界等
函式返回值指示是否正確轉化,sum代表轉化後的值 */
bool conversetonumber(const char *pstr, int &sum)
else
while(*pchar != '\0')
} //the char is not a digit,input error
else
} if(*pchar == '\0')
return isvalid; }
/* 4.
左旋字串
定義字串的左旋轉操作:把字串前面的若干個字元移動到字串的尾部。如把字串abcdef左旋轉2位得到字串cdefab。
請實現字串左旋轉的函式。要求時間對長度為n的字串操作的複雜度為o(n),輔助記憶體為o(1)。 */
/*思路1,將字串看成兩部分xy,目標是yx,我們利用將x y 分別翻轉來得到結果 (xt yt)t=yx. */
//reverse the word
void reverse(char *pstart,char *pend)
} }
char * leftconversestr(char *pstr,int m)
} return pstr; }
/* 5
.在字串中刪除特定的字元.輸入they are students.」和」aeiou」,則刪除之後的第乙個字串變成」thy r stdnts.」。
遍歷源字串,對每個字元在第二個字串中查詢是否存在,存在則刪除。首先我們對第一部分進行優化,由於刪除乙個字元時,後面的都要
往前移,這樣刪除乙個字元需要o(n),太耗時了,乙個改進的做法是維護兩個指標 pfast pslow,當當前字元是需要刪除的字元時,pfast ++
,是不需要刪除的字元時,兩個都++,這樣我們最後得到了pslow就是結果,對於查詢部分,利用hash,時間複雜度o(1). */
char * delchar(char *psource,char *pdel)
char *pfast=psource,*pslow=psource;
while(*pfast != '\0')
pfast++; }
*pslow='\0';
return psource; }
/* 6.
對稱子字串的最大長度
題目:輸入乙個字串,輸出該字串中對稱的子字串的最大長度。
比如輸入字串「google」,由於該字串裡最長的對稱子字串是「goog」,因此輸出4。
解題思路:判斷乙個字串是否對稱相信都會做,從兩邊向中間開始逐一判斷,如果採用這個思路,我們需要列舉出所有可能的子串
即n^2個,然後對每乙個子串判斷是否對稱,這樣時間複雜度o(n^3).因為存在重複判斷,所以時間負責度會這麼高,我們換一種思路
從中間像兩端判斷,這樣可以降低複雜度,為o(n^2) */
int getlongestsymmetricallength(char *pstr)
tmp=pright-pleft-1;
if(tmp>len)
len=tmp;
pleft=pchar;
pright=pchar+1;
while(pleft >=pstr && *pright!='\0' && (*pleft==*pright))
//even length
tmp=pright-pleft-1;
if(tmp>len)
len=tmp;
pchar++; }
}return len; }
int main()
**至微博
字串操作 靠字串分割字串
字串分解函式。注意strtok比較複雜。要妥善運用!也可以不用strtok函式,但要實現字串靠字串分割比較困難!注意str指向的空間必須是可讀可寫的 如陣列或動態分配的空間 不能為字串常量的指標,因為strtok改變了其中的內容。include include 功能 將str中的字串按照elemon...
字串操作
字串操作 要了解字串操作首先要了解什麼是字串。前面已經提過,字串是乙個由零個或者多個字元組成的有限序列,既然是有限的那麼也就意味著字串存在乙個起始位置和乙個結束位置。我們以指定起始位置的方式來通知程式從該位置起向後的一段記憶體空間的內容應該解釋為字串。那麼這個字串在什麼地方結束呢?規定當遇到字元 0...
字串操作
include using namespace std int strlength char str char strcopy char str1,char str2 char strlink char str1,char str2 int main char strcopy char str1,c...