這兩天接了乙份課設**,套路居多,但我還是遇到了不太熟悉的情況,那就是c語言程式中的漢字提取和分離。
可以用strtok()
,但我對此不熟悉,不理解,就繞了路。具體使用方法可以看下面的那個鏈結
在這份課設要求裡,要求實現用「程式+設計」這類片語組合,找到含有這兩個片語的對應名稱。一開始我用陣列遍歷+strstr()
做了,這對英文和數字是適用,但用陣列或者指標遍歷不能適應漢字的儲存方式,只能另尋途徑。
要實現這個功能,還是用一開始的思路:先片語分離,再strstr()
。
如何實現片語分離呢?我用了strstr(str,"+")
試圖得出開頭是加號的指標,但謎之錯誤。
隨後,我就strchr(str,'+')
,成功得到了相應指標,指標+1後,就得到了第二個詞語的位址str2。關於第乙個詞語的位址,要用strncat(str1,str,num)
,這個函式能把str前num個字元賦給str1,num由strlen(str)-strlen(str2)-1
計算。
分離後用strstr()
的返回值來判斷str1和str2在同乙個字串**現。!null
就是出現了。
關於c語言字串操作總結,在此不贅述了。大家可以看這篇博文:
《演算法競賽高階指南》1 5字串
乙個字串的字首是從第乙個字元開始的連續若干個字元,例如 abaab 共有5個字首,分別是a,ab,aba,abaa,abaab。我們希望知道乙個n位字串s的字首是否具有迴圈節。換言之,對於每乙個從頭開始的長度為 i i 1 的字首,是否由重複出現的子串a組成,即 aaa a a重複出現k次,k 1 ...
ybt高效高階2 2 1 字串雜湊
給出一堆字串,問你有多少個不同的。這道題很明顯就是一道 hash。我們隨便弄乙個值數,然後對於每個字串有乙個 hash 值。相同的字串的 hash 值一定相同,不同的字串的 hash 值一般不同,就也可能相同 那我們就只用跟前面有他的 hash 值的字串看是否相同就可以了。至於記錄乙個 hash 值...
字串1 字串的旋轉
題目描述 給定乙個字串,要求將字串前面的若干個字元移到字串的尾部。例如 將字串 abcdef 的前三個字元 a b c 移到字串的尾部,那麼原字串將變成 defabc 首先想到的是將需要移動的字元乙個乙個移到字串的尾部。實現如下 public class transfet s n 1 t publi...