翻轉字串和比較兩個字串是否相同

2021-07-22 21:51:52 字數 1774 閱讀 2522

奉獻兩個小題,練習繼續:

//

題目描述

////

請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串(可以使用單個過程變數)。

//給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。

//測試樣例:

//"this is nowcoder"

//返回:"redocwon si siht"

#include

#include

using

namespace

std;

class

reverse

//for (int i = inistring.size(); i >0; i--)

//error: control reaches end of non-void function [-werror,-wreturn-type]

//沒有返回值啊

//

//兩個數字交換,可以借助第三變數,也可以不借助第三變數;有三種方法,自行總結

//inistring[i] ^= inistring[j] ^= inistring[i] ^= inistring[j];

//交換

for (int i = 0; i < inistring.size()/2; i++)

return

inistring;

}};//

題目描述

////

給定兩個字串,請編寫程式,確定其中乙個字串的字元重新排列後,能否變成另乙個字串。這裡規定大小寫為不同字元,且考慮字串重點空格。

//給定乙個string stringa和乙個string stringb,請返回乙個bool,代表兩串是否重新排列後可相同。保證兩串的長度都小於等於5000。

//測試樣例:

//"this is nowcoder", "is this nowcoder"

//返回:true

//"here you are", "are you here"

//返回:false

#include

using

namespace

std;

#include

#include

//直接用的sort函式,雖然簡潔,複雜度卻是o(nlogn);

//正規的做法,應該是hash,用256的元素記錄每個字元出現的次數

//再進行比較,掃瞄一遍,比較一遍,複雜度只要o(n).

class

same

for (size_t i = 0; i < stringa.size(); i++)

for (size_t i = 0; i < stringb.size(); i++)

//if (maps.empty())

//為什麼沒有通過呢???

//

//else

//for (size_t i = 0; i < maps.size(); i++) //

通過測試

}return

true

; }

};///

/想法不錯,但是若是aa,bb此題也可通過

//bool checksam(string stringa, string stringb)

//if (t == 0)//}

//return false;

//}

翻轉字串和比較兩個字串是否相同

奉獻兩個小題,練習繼續 題目描述 請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串 可以使用單個過程變數 給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。測試樣例 this is nowcoder 返回 r...

比較兩個字串是否相等

我剛剛才學了組合語言,就寫了乙個很簡單的程式.下面是程式 dseg segment data1 db 9,0,9 dup data2 db 9,0,9 dup cnt db 8 str1 db 13,10,two string is same.str2 db 13,10,two string is ...

shell比較兩個字串是否相等

比較兩個字串是否相等的辦法是 if test x test x then 這裡的關鍵有幾點 1 使用單個等號 2 注意到等號兩邊各有乙個空格 這是unix shell的要求 3 注意到 test x最後的x,這是特意安排的,因為當 test為空的時候,上面的表示式就變成了x testx,顯然是不相等...