【字串轉置】
字串包含長度不等的字元,eg "ab張三cde李f四21王二gh"
【背景知識】
ascii碼字元值都小於
0x80 而漢字的兩個字元一般都是0x80以上第乙個位元組是必需為0x80以上,第二個字元未擴充套件之前gbk碼都是0x80以上,擴充套件後,一些自定義字,完全無視ascii碼規則了,第二個位元組可能是個字母,這樣的情況多見於生闢字,自造字
標準的國標碼中漢字的首位元組和次位元組都在區位碼範圍內,雙位元組符號至少也是首位元組大於0x80
即使是生闢字,至少也尊守了首位元組大於0x80,如果用有符號數來檢查,則首字是個負數
下面提供兩種方法:
(1)分別是開闢新陣列複製
(2)原地雙重轉置
注意點:
char型的範圍為-128~127,所以帶漢字的字串需要unsigned char 陣列儲存;
漢字占用兩個位元組(字元),且高低位元組順序不能轉置;
#include#include#includeusing namespace std;
int main()
else
}res[len]='\0';
printf("%s\n",res);
//法2:原地交換
unsigned char temp;
for(i=0;i0;i--) //漢字修正 }
最短包含字串的長度
最短包含字串的長度 給定字串str1和str2,求str1的字串中含有str2所有字元的最小字串長度。輸入描述 輸入包括兩行,第一行乙個字串,代表str 1 1 leng thst r1 1 05 str1 1 leq length leq 10 5 str1 1 len gths tr1 105 ...
字串包含
問題 給定兩個分別由字母組成的字串a和字串b,字串b的長度比字串a短。請問,如何最快地判斷字串b中所有字母是否都在字串a裡?為了簡單起見,我們規定輸入的字串只包含大寫英文本母,請實現函式bool stringcontains string a,string b 比如,如果是下面兩個字串 string...
字串包含
給定乙個長字串a和乙個短字串b,請問,如何最快地判斷出短字串b中的所有字元是否都在長字串a中?輪詢短字串b中的每乙個字元,逐個與長字串a中的每個字元比較,看是否都在字串a中。實現 public class stringcontain return true public static void ma...