一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Java 判斷字符串a和b是否互為旋轉詞

Java 判斷字符串a和b是否互為旋轉詞

2020-09-30 15:42妖久 JAVA教程

本篇文章主要介紹了判斷字符串a和b是否互為旋轉詞的相關知識,具有很好的參考價值。下面跟著小編一起來看下吧

旋轉詞:把字符串str的任意部分移動到后面形成的新字符串叫做字符串str的旋轉詞。

比如abc的旋轉詞有 abc,acb,cba,...

判斷str1和str2是否互為旋轉詞,其最優解可以是時間復雜度為O(n)(n為字符串的長度)

方法如下:

1、判斷長度是否相等

2、長度相等的話就構建大字符串,str1+str1(str1+str1中包含了str1的所有旋轉詞)

3、用KPM算法判斷大字符串中是否包含str2

下面是具體算法實現,必須先了解KPM算法才行

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package k;
 
import java.util.Scanner;
 
public class test1 {
 static int[] next; //next數組
 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()) //如果長度不相等,那么就肯定不是互為旋轉詞
   System.out.println(str1 + "與" + str2 + "不是互為旋轉詞");
  
  else
  {
   str = str1 + str1;
   makeNext(); //構建next數組
 
   check(); //判斷是否為旋轉詞
  }
 }
 
 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 + "互為旋轉詞");
   else
    System.out.println(str1 + "與" + str2 + "不是互為旋轉詞");
 }
 
 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;
  }
 }
}

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持服務器之家!

原文鏈接:http://www.cnblogs.com/tangZH/p/6655984.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美人妖大啪啪 | 久久久高清国产999尤物 | 2021福利视频 | 91视在线国内在线播放酒店 | 日本人和黑人一级纶理片 | 午夜伦理电影在线观免费 | 日本黄视频在线播放 | 亚洲国产中文字幕在线视频综合 | 国产精品亚洲综合久久 | 99久久精品国语对白 | 亚洲视频一区网站 | 97福利社| 亚洲成年网站在线观看 | 亚洲天堂在线视频观看 | 青青青青青操 | dasd817黑人在线播放 | 欧美z0z0人禽交 | 国产欧美一区二区精品性色 | 国产精品成人扳一级aa毛片 | 亚洲国产免费观看视频 | 国产精品视频色拍拍 | 国产亚洲精品一区久久 | 欧式午夜理伦三级在线观看 | 欧美高清3dfreexxxx性 | 日本红怡院亚洲红怡院最新 | 国产宅男 | 公交车揉捏大乳呻吟喘娇 | 美女被无套进入 | 亚洲欧美综合区自拍另类 | 色婷婷久久综合中文久久一本 | avtt在线观看 | 毛片视频网站 | 亚洲高清中文字幕 | 国产综合成人亚洲区 | 洗濯屋H纯肉动漫在线观看 武侠艳妇屈辱的张开双腿 午夜在线观看免费观看 视频 | 闺蜜调教我做她的脚奴 | 免费观看俄罗斯特黄特色 | 国语第一次处破女 | 草莓绿巨人香蕉茄子芭乐 | 日本伊人色 | 狠狠鲁视频 |