zoukankan      html  css  js  c++  java
  • 《程序员面试金典》之翻转子串

    1、题目描述

    假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。

    测试样例:
    "Hello world","worldhello "
    返回:false 
    "waterbottle","erbottlewat"
    返回:true
     

    2、代码实现

     1 import java.util.*;
     2 
     3 public class ReverseEqual {
     4     /**
     5      * 检查一个单词是否为其他字符串的子串
     6      * @param s1 字符串s1
     7      * @param s2 字符串s2
     8      * @return s2是否由s1旋转而成
     9      */
    10     public boolean checkReverseEqual(String s1, String s2) {
    11         
    12         // 如果两个字符串不相等,就没必要再进行比较,直接返回false
    13         if(s1.length() != s2.length()){
    14             return false;
    15         }
    16         
    17         /**
    18          * 用s2字符串作为不动字符串,依次拿字符串s1的每一位与s2字符串循环对比,如果s1与s2有不相等,则进行从s1字符串的下一位
    19          * 开始与s2的第一位进行对比,直到对比完成。
    20          */
    21         for(int i = 0; i < s1.length(); i++){
    22             int temp = i;
    23             for(int j = 0; j < s2.length(); j++){
    24                 if(s1.charAt(i) != s2.charAt(j)){
    25                     break;
    26                 }
    27                 i = (i+1)%s1.length();
    28                 if(i == temp){
    29                     return true;
    30                 }
    31             }
    32             i = temp;
    33         }
    34         return false;
    35     }
    36     
    37     /**
    38      * 用户页面测试
    39      * @param args
    40      */
    41     public static void main(String[] args) {
    42         ReverseEqual re = new ReverseEqual();
    43         System.out.println(re.checkReverseEqual("waterbottle", "erbottlewat"));
    44         System.out.println(re.checkReverseEqual("Hello world", "worldhello "));
    45     }
    46 }
  • 相关阅读:
    idea高效实用快捷键【待补充】
    前台sessionStorage存取对象注意事项
    SpringBoot2.0 整合 JWT 框架后台生成token
    vue暗含玄机的v-for指令
    【串线篇】spring boot自定义starter
    【串线篇】spring boot启动配置原理
    【串线篇】spring boot整合SpringData JPA
    docker安装MySQL5.7示例!!坑,ERROR 1045 (28000): Access denied for user
    docker常用命令及操作
    docker简介及安装
  • 原文地址:https://www.cnblogs.com/wangchaoyuan/p/5965364.html
Copyright © 2011-2022 走看看