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 }
  • 相关阅读:
    aa
    https php
    字节转换(转载)
    mysql和mariadb中字段拼接类型有两个或多个字段或者一个字段和一个固定字符串拼接
    Qt检测显示器的个数
    QWebEngine自动添加麦克风和摄像头权限
    Qt开启和关闭蓝牙
    cef关闭主窗口并调用CefQuitMessageLoop()后,仍然在后台运行的问题(linux)
    windows安装jq
    Allure2环境准备
  • 原文地址:https://www.cnblogs.com/wangchaoyuan/p/5965364.html
Copyright © 2011-2022 走看看