Java 判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞
旋轉(zhuǎn)詞:把字符串str的任意部分移動到后面形成的新字符串叫做字符串str的旋轉(zhuǎn)詞。
比如abc的旋轉(zhuǎn)詞有 abc,acb,cba,...
判斷str1和str2是否互為旋轉(zhuǎn)詞,其最優(yōu)解可以是時間復雜度為O(n)(n為字符串的長度)
方法如下:
1、判斷長度是否相等
2、長度相等的話就構(gòu)建大字符串,str1+str1(str1+str1中包含了str1的所有旋轉(zhuǎn)詞)
3、用KPM算法判斷大字符串中是否包含str2
下面是具體算法實現(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(); //獲取輸入的第一個字符串
str2 = in.next(); //獲取輸入的第二個字符串
if (str1.length() != str2.length()) //如果長度不相等,那么就肯定不是互為旋轉(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;
}
}
}
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
詳解Java創(chuàng)建多線程的四種方式以及優(yōu)缺點
這篇文章主要介紹了Java創(chuàng)建多線程的四種方式以及優(yōu)缺點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
Spring Boot實戰(zhàn)之數(shù)據(jù)庫操作的示例代碼
本篇文章主要介紹了Spring Boot實戰(zhàn)之數(shù)據(jù)庫操作的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
Eclipse添加xml文件提示及Hibernate配置學習
文件提示功能在開發(fā)過程中很實用的,本文實現(xiàn)了一個Eclipse添加xml文件提示,感興趣的朋友可以了解下啊,希望本文對你有所幫助2013-01-01
JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式
這篇文章主要介紹了JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10

