思路:
js
function replacespace(str)
c++
#include #include /*length 為字元陣列str的總容量,大於或等於字串str的實際長度*/
void replaceblank(char str, int length)
/*newlength 為把空格替換成'%20'之後的長度*/
int newlength = originallength + numberofblank * 2;
if(newlength > length)
return;
int indexoforiginal = originallength;
int indexofnew = newlength;
while(indexoforiginal >= 0 && indexofnew > indexoforiginal)
else
-- indexoforiginal;}}
題目描述:請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100","5e2","-123","3.1416"和"-1e-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
思路:
#include bool scanunsignedinteger(const char** str);
bool scaninteger(const char** str);
// 數字的格式可以用a[.[b]][e|ec]或者.b[e|ec]表示,其中a和c都是
// 整數(可以有正負號,也可以沒有),而b是乙個無符號整數
bool isnumeric(const char* str)
// 如果出現'e'或者'e',接下來跟著的是數字的指數部分
if(*str == 'e' || *str == 'e')
return numeric && *str == '\0';
}bool scanunsignedinteger(const char** str)
// 整數的格式可以用[+|-]b表示, 其中b為無符號整數
bool scaninteger(const char** str)
題目描述:輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。
思路:
#include void permutation(char* pstr, char* pbegin);
void permutation(char* pstr)
void permutation(char* pstr, char* pbegin)
else}}
題目描述:給定乙個數字,我們按照如下規則把它翻譯成字串:0翻譯成『a』,1翻譯成『b』,......,11翻譯成『l』,......,25翻譯成『z』。乙個數字可能有多個翻譯。例如,12258有5種不同的翻譯,分別是「bccfi」,「bwfi」,「bczi」,「mcfi」和「mzi」。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。
思路:
#include #include using namespace std;
int gettranslationcount(const string& number);
int gettranslationcount(int number)
int gettranslationcount(const string& number)
}counts[i] = count;
}count = counts[0];
delete counts;
return count;
}
題目描述:輸出子字串的長度。例如,在字串「arabcacfr」中,最長的不含重複字元的子字串是「acfr」,長度為4。
思路:
// 動態規劃
int longestsubstringwithoutduplication_2(const std::string& str)
position[str[i] - 'a'] = i;
}if(curlength > maxlength)
maxlength = curlength;
delete position;
return maxlength;
}
題目一:字串中第乙個只出現一次的字元題目描述:如輸入「abaccdeff」,則輸出『b』。
思路:雜湊表
#include #include char firstnotrepeatingchar(const char* pstring)
return '\0';
}
題目二:字元流中第乙個只出現一次的字元題目描述:請實現乙個函式用來找出字元流中第乙個只出現一次的字元。例如,當從字元流中只讀出前兩個字元"go"時,第乙個只出現一次的字元是"g"。當從該字元流中讀出前六個字元「google"時,第乙個只出現一次的字元是"l"。
思路:雜湊表
#include #include #include using namespace std;
class charstatistics
void insert(char ch)
}return ch;
}private:
// occurrence[i]: a character with ascii value i;
// occurrence[i] = -1: the character has not found;
// occurrence[i] = -2: the character has been found for mutlple times
// occurrence[i] >= 0: the character has been found only once
int occurrence[256];
int index;
};
題目一:翻轉單詞順序題目描述:牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?
思路:
#include #include "..\utilities\stringutil.h"
#include char* reversesentence(char *pdata)
else if(*pend == ' ' || *pend == '\0')
else
pend ++;
}return pdata;
}void reverse(char *pbegin, char *pend)
}
題目二:左旋轉字串題目描述:組合語言中有一種移位指令叫做迴圈左移(rol),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s=」abcxyzdef」,要求輸出迴圈左移3位後的結果,即「xyzdefabc」。是不是很簡單?ok,搞定它!
思路:
#include #include "..\utilities\stringutil.h"
#include char* leftrotatestring(char* pstr, int n)
}return pstr;
}
end 面試題 劍指offer 字串的排列
輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。a 把字串分為兩部分 第一部分是第乙個字元,第二部分是第乙個字元以後...
劍指offer 面試題58 翻轉字串
牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....
面試題 字串翻轉
使用 c c 編寫函式,實現字串反轉,要求不使用任何系統函式,且時間複雜度最小,函式原型 char reverse str char str 使用c c 編寫函式,實現字串反轉,要求不使用任何系統函式,且時間複雜度最小,函式原型 char reverse str char str include i...