6.翻转子串

题目描述

假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。

给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。

测试样例:

"Hello world","worldhello "
返回:false
"waterbottle","erbottlewat"
返回:true

代码如下:
import java.util.*;

public class ReverseEqual {
    public boolean checkReverseEqual(String s1, String s2) {
        int len1=s1.length();
        int len2=s2.length();
        if(len1==len2){
            String s1s1=s1+s1;
            return isSubstring(s1s1,s2);
        }
        return false;
    }

    boolean isSubstring(String s1,String s2){
        int len=s1.length();
        for(int i=0;i<len;i++)
            for(int j=i+1;j<len;j++){
                String s3=s1.substring(i,j+1);
                System.out.println(s3);
                if(s2.equals(s3)) return true;

        }
        return false;
    }
}

  

时间: 2024-10-07 18:13:38

6.翻转子串的相关文章

1.8字符串- 翻转子串

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

【8】翻转子串

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

数组与字符串:翻转子串

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

程序员面试金典算法题

空格替换 题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成. 给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string. 测试样例: "Mr John Smith",13 返回:"Mr%20John%20Smith" "Hello World&qu

程序员面试——数组与字符串

来自面试金典,只记录思路这些(博主最近时间紧,还是只像你仍代码吧... 1.1字符互异 思路一:双循环,O(n^2) import java.util.*; public class Different { public boolean checkDifferent(String iniString) { for (int i=0;i<iniString.length()-1;i++) { char tmp=iniString.charAt(i); for (int j=i+1;j<iniSt

Cracking the Coding Interview

第一章:数组与字符串 1 数组与字符串 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符.保证字符串中的字符为ASCII字符.字符串的长度小于等于3000. 测试样例: "aeiou" 返回:True "BarackObama" 返回:False 思路:(1) 两个for循环,比较后面的是否相同 O(

添加回文串

题目描述 对于一个字符串,我们想通过添加字符的方式使得新的字符串整体变成回文串,但是只能在原串的结尾添加字符,请返回在结尾添加的最短字符串. 给定原字符串A及它的长度n,请返回添加的字符串.保证原串不是回文串. 测试样例: "ab",2 返回:"a" 问题分解 1.找到最长的回文子串 2.剩余部分就是需要添加的子串 使用Naive查找,寻找最大公共串 这里用到了:翻转子串==原子串 =>回文子串 从原串的开头开始找,比较是否与翻转串的末尾相同 [这里用到了本题

C语言强化(九)翻转句子中单词的顺序

这是到很常见的题目,非常简单,但你用到数据结构了吗,或者说你用对了吗? 通过这道题,你可以掌握: 如何将用户的输入,输出到控制台 如何分割字符串 如何正确使用数据结构 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 句子中单词以空格符隔开.标点符号和普通字母一样处理. 例如输入"I am a student.",则输出"student. a am I". 思路 一.获取字符串 首先要能够获取到用户输入的一串字符串,有两点需要注意: 1.如果使

字符串翻转和替换

描述:大家平时都会用到字符串,现在有几种字符串操作,需要你用这几种操作处理下字符串. 输入:多组数据,以EOF结束. 第一行一个字符串,字符串长度大于0,并且小于等于200. 第二行一个数字t,(0<t<=200). 下面t行,每行表示一种操作. 共有两种操作,每行数据的第一个数表示操作的种类: 翻转操作:第一个是一个数字0,然后两个数字i和len,翻转从下标i长度为len的子串. 替换操作:第一个是一个数字1,然后两个数字i和len,接着一个长度为len的字符串str,用str替换从下标i长