奉獻兩個小題,練習繼續:
//題目描述
////
請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串(可以使用單個過程變數)。
//給定乙個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,顯然是不相等...