中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Java判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞-創(chuàng)新互聯(lián)

旋轉(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)

網(wǎng)站托管運(yùn)營(yíng)
定西市| 鞍山市| 大庆市| 顺平县| 临潭县| 永吉县| 磴口县| 新建县| 安图县| 凤阳县| 乌拉特前旗| 中超| 吉首市| 宜章县| 渭南市| 鄯善县| 榆树市| 砚山县| 治多县| 苏尼特左旗| 闸北区| 徐水县| 延边| 潢川县| 广河县| 赤峰市| 林周县| 英吉沙县| 沂源县| 昌都县| 温泉县| 孝感市| 阜康市| 阿尔山市| 阿拉善盟| 容城县| 岳阳县| 娱乐| 磐安县| 新乐市| 临夏市|