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 }
  • 相关阅读:
    5M1E,软件质量管理最佳解决方案
    Laravel 刚创建的项目 API 无法使用 Session,是没有在Api的请求内开启Session
    python添加默认模块搜索路径
    [传纸条]
    [miller_rabin]
    国内rog游戏手机2与国际版本的 差别
    windows下依端口查进程
    gor phone 2 优缺点
    IDA pro 6.8 导入cpu解析模块报错 ImportError: No module named ida_ bytes
    JEB 4.5 新增 RISC-V 反编译器支持
  • 原文地址:https://www.cnblogs.com/wangchaoyuan/p/5965364.html
Copyright © 2011-2022 走看看