旋轉(zhuǎn)詞:把字符串str的任意部分移動(dòng)到后面形成的新字符串叫做字符串str的旋轉(zhuǎn)詞。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),通山企業(yè)網(wǎng)站建設(shè),通山品牌網(wǎng)站建設(shè),網(wǎng)站定制,通山網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,通山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。比如abc的旋轉(zhuǎn)詞有 abc,acb,cba,...
判斷str1和str2是否互為旋轉(zhuǎn)詞,其最優(yōu)解可以是時(shí)間復(fù)雜度為O(n)(n為字符串的長(zhǎng)度)
方法如下:
1、判斷長(zhǎng)度是否相等
2、長(zhǎng)度相等的話就構(gòu)建大字符串,str1+str1(str1+str1中包含了str1的所有旋轉(zhuǎn)詞)
3、用KPM算法判斷大字符串中是否包含str2
下面是具體算法實(shí)現(xiàn),必須先了解KPM算法才行
package k; import java.util.Scanner; public class test1 { static int[] next; //next數(shù)組 static String str1; //字符串str1 static String str2; //字符串str2 static String str; //字符串str=str1+str1 public static void main(String[] args) { Scanner in = new Scanner(System.in); str1 = in.next(); //獲取輸入的第一個(gè)字符串 str2 = in.next(); //獲取輸入的第二個(gè)字符串 if (str1.length() != str2.length()) //如果長(zhǎng)度不相等,那么就肯定不是互為旋轉(zhuǎn)詞 System.out.println(str1 + "與" + str2 + "不是互為旋轉(zhuǎn)詞"); else { str = str1 + str1; makeNext(); //構(gòu)建next數(shù)組 check(); //判斷是否為旋轉(zhuǎn)詞 } } private static void check() { int i = 0; int j = 0; while (i < str2.length() && j < str.length()) if (i == -1 || str2.charAt(i) == str.charAt(j)) { i++; j++; } else { i = next[i]; } if (i >= str2.length()) System.out.println(str1 + "與" + str2 + "互為旋轉(zhuǎn)詞"); else System.out.println(str1 + "與" + str2 + "不是互為旋轉(zhuǎn)詞"); } private static void makeNext() { next = new int[str2.length()]; int i = 0; int k = -1; next[0] = -1; while (i < str2.length() - 1) { while (k >= 0 && str2.charAt(i) != str2.charAt(k)) k = next[k]; i++; k++; if (str2.charAt(i) == str2.charAt(k)) next[i] = next[k]; else next[i] = k; } } }
分享標(biāo)題:Java判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://m.rwnh.cn/article30/cejcpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站策劃、服務(wù)器托管、用戶體驗(yàn)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容