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)解可以是時間復(fù)雜度為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)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
MybatisPlusInterceptor實現(xiàn)sql攔截器超詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于MybatisPlusInterceptor實現(xiàn)sql攔截器超詳細(xì)教程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08
打開IDEA配置Spring項目時發(fā)現(xiàn)沒有選擇java?1.8的選項解決方案
這篇文章主要介紹了打開IDEA配置Spring項目時發(fā)現(xiàn)沒有選擇java?1.8的選項的解決方案,文中通過代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者idea具有一定的參考借鑒價值,需要的朋友可以參考下2025-03-03
Java中redisTemplate注入失敗NullPointerException異常問題解決
這篇文章主要介紹了Java中redisTemplate注入失敗NullPointerException異常問題解決,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2023-08-08

