字串轉置 字串包含長度不等的字元

2021-07-05 09:25:03 字數 896 閱讀 9972

【字串轉置】 

字串包含長度不等的字元,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...