欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞

 更新時間:2017年05月14日 08:50:12   作者:妖久  
本篇文章主要介紹了判斷字符串a(chǎn)和b是否互為旋轉(zhuǎn)詞的相關(guā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)文章

  • 詳解Java創(chuàng)建多線程的四種方式以及優(yōu)缺點

    詳解Java創(chuàng)建多線程的四種方式以及優(yōu)缺點

    這篇文章主要介紹了Java創(chuàng)建多線程的四種方式以及優(yōu)缺點,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Jmeter結(jié)構(gòu)體系及運行原理順序解析

    Jmeter結(jié)構(gòu)體系及運行原理順序解析

    這篇文章主要介紹了Jmeter結(jié)構(gòu)體系及運行原理順序解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Java中打亂一個數(shù)組的2種公平算法分享

    Java中打亂一個數(shù)組的2種公平算法分享

    這篇文章主要介紹了Java中打亂一個數(shù)組的2種公平算法分享,本文講解了洗牌程序原理、生成隨機索引交換二種方法并給出示例代碼,需要的朋友可以參考下
    2015-03-03
  • Spring Boot實戰(zhàn)之?dāng)?shù)據(jù)庫操作的示例代碼

    Spring Boot實戰(zhàn)之?dāng)?shù)據(jù)庫操作的示例代碼

    本篇文章主要介紹了Spring Boot實戰(zhàn)之?dāng)?shù)據(jù)庫操作的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • springboot2.5.0和redis整合配置詳解

    springboot2.5.0和redis整合配置詳解

    本篇文章向大家介紹springboot2.5.0 整合 redis 配置方法,教大家在pom添加依賴的方法如何調(diào)用redis,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-06-06
  • Eclipse添加xml文件提示及Hibernate配置學(xué)習(xí)

    Eclipse添加xml文件提示及Hibernate配置學(xué)習(xí)

    文件提示功能在開發(fā)過程中很實用的,本文實現(xiàn)了一個Eclipse添加xml文件提示,感興趣的朋友可以了解下啊,希望本文對你有所幫助
    2013-01-01
  • Spring--國內(nèi)Java程序員用得最多的框架

    Spring--國內(nèi)Java程序員用得最多的框架

    前幾年面試最常問的且可以順利拿到高薪的技能是Spring,隨著Spring體系的壯大,除非你在簡歷上添加Spring Boot和Spring Cloud的技能,才可以打動面試官,而現(xiàn)在,除非是Spring全家桶的實戰(zhàn)經(jīng)驗,否則難以讓面試官高看
    2021-06-06
  • Java遞歸模糊查詢文件實例代碼

    Java遞歸模糊查詢文件實例代碼

    遞歸算法是一種直接或間接地調(diào)用自身的算法,在計算機編寫程序中,遞歸算法對解決一大類問題是十分有效的,它往往使算法的描述簡潔而且易于理解,這篇文章主要給大家介紹了關(guān)于Java遞歸模糊查詢文件的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式

    JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式

    這篇文章主要介紹了JavaBean和SpringBean的區(qū)別及創(chuàng)建SpringBean方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 通過Java壓縮JavaScript代碼實例分享

    通過Java壓縮JavaScript代碼實例分享

    這篇文章主要介紹了通過Java壓縮JavaScript代碼實例分享,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12

最新評論