码迷,mamicode.com
首页 > 其他好文 > 详细

面试题 01.09. 字符串轮转

时间:2020-07-14 01:03:07      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:eve   uil   stat   tco   情况   ems   分享   stringbu   rev   

题目来源:https://leetcode-cn.com/problems/string-rotation-lcci/

字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。

示例1:

输入:s1 = "waterbottle", s2 = "erbottlewat"
输出:True
示例2:

输入:s1 = "aa", s2 = "aba"
输出:False
提示:

字符串长度在[0, 100000]范围内。

1 class Solution {
2     public boolean isFlipedString(String s1, String s2) {
3         if(s1.length() != s2.length()) return false;
4         String s = s2+s2;
5         return s.contains(s1);  // 0ms
6     }
7 }

 

有意思的错误分享:

  刚开始把题目当成字符串反转后比对;

 1 public class 字符串轮转 {
 2     public boolean isFlipedString(String s1, String s2) {
 3         if(s1.length() != s2.length()) return false;
 4         StringBuilder builder = new StringBuilder();
 5         builder.append(s2); 7         return s1.equals((builder.reverse().toString()));
 8     }
 9 
10     public static void main(String[] args) {
11         字符串轮转 str = new 字符串轮转();
12         System.out.println(str.isFlipedString("abcd", "dcba"));
13     }
14 }

学习记录:

  1、 == 和 equals的区别?

    ==:对于基本类型来说是值比较,对于引用类型来说比较的是引用;

    equals:默认情况下是引用比较,而(String、Integer等)类重写了equals方法,变成了值比较;

  2、StringBuilder是否也是值比较?

    不是的!!

    String在底层源码中重写了equals方法,但是StringBuilder没有重写equals方法,所以它还是引用比较

//StringBuilder源码
public
boolean equals(Object obj) { return (this == obj); }

    我们可以将StringBuilder通过toString转换成String再进行值比较

面试题 01.09. 字符串轮转

标签:eve   uil   stat   tco   情况   ems   分享   stringbu   rev   

原文地址:https://www.cnblogs.com/bincode/p/13296543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!