判断两个字符串是否互为旋转词

来源:互联网 发布:windows-X是什么软件 编辑:程序博客网 时间:2024/04/29 06:47

题目:

如果一个字符串str,把字符串str前面任意的部分挪到后面形成的字符串叫做str的旋转词。比如str="12345",str的旋转词有"12345"、"23451"、"34512"、"45123"、和"51234"。给定两个字符串a和b,请判断a和b是否互为旋转词。

要求:

如果a和b长度不一样,那么a和b必然不互为旋转词,可以直接返回false。当a和b长度一样,都为N时,要求解法的时间复杂度为O(N)。

分析:

这道题考察的是一个字符串的查找的小技巧,我们就举a = "cdab", b = "abcd",这个例子。首先stringb2 = b + b,那么b2中所存储的字符串内容就是abcdabcd,接着我们需要在b2这个字符查找,a是不是b2的子串就可以了,如果是,则返回true,否则返回false。

//判断两个字符串是否互为旋转词 <span style="font-family: Arial, 宋体; font-size: 14px; line-height: 24px;">//要检查一个字符串是否包含另外一个字符串需要使用indexOf()方法,如果indexOf方法返回大于等于0的值表示包含,若返回-1则表示字符串中不包含</span>
<span style="font-family: Arial, 宋体; font-size: 14px; line-height: 24px;"></span><pre class="prettyprint java prettyprinted" style="padding: 5px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin-bottom: 10px; overflow: auto; width: auto; background-color: rgb(225, 225, 225); background-position: 0% 0%;"><span class="com" style="font-family: Arial, 宋体; font-size: 14px; color: gray;">/** * Main.java * * @author outofmemory.cn */</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"></span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">public</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">class</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(43, 145, 175);">Main</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">{</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">    </span><span class="com" style="font-family: Arial, 宋体; font-size: 14px; color: gray;">/**     * 检查字符串是否包含某个字符串     */</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">    </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">public</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">void</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> checkStringContains</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">()</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">{</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">        </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(43, 145, 175);">String</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> haystack </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">=</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="str" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(128, 0, 0);">"Programming in Java"</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">;</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">        </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(43, 145, 175);">String</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> needle1 </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">=</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="str" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(128, 0, 0);">"Java"</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">;</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">        </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(43, 145, 175);">String</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> needle2 </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">=</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="str" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(128, 0, 0);">"Pascal"</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">;</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">        </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">int</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> index1 </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">=</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> haystack</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">indexOf</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">(</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">needle1</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">);</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">        </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">int</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> index2 </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">=</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> haystack</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">indexOf</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">(</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">needle2</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">);</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">        </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">if</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">(</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">index1 </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">!=</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">-</span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(128, 0, 0);">1</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">)</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">            </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(43, 145, 175);">System</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">.</span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">out</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">println</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">(</span><span class="str" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(128, 0, 0);">"The string contains the substring "</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">+</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> needle1</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">);</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">        </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">else</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">            </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(43, 145, 175);">System</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">.</span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">out</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">println</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">(</span><span class="str" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(128, 0, 0);">"The string does not contain the substring "</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">+</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> needle1</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">);</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">        </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">if</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">(</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">index2 </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">!=</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">-</span><span class="lit" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(128, 0, 0);">1</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">)</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">            </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(43, 145, 175);">System</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">.</span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">out</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">println</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">(</span><span class="str" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(128, 0, 0);">"The string contains the substring "</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">+</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> needle2</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">);</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">        </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">else</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">            </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(43, 145, 175);">System</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">.</span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">out</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">.</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">println</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">(</span><span class="str" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(128, 0, 0);">"The string does not contain the substring "</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">+</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> needle2</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">);</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">    </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">}</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">    </span><span class="com" style="font-family: Arial, 宋体; font-size: 14px; color: gray;">/**     * Starts the program     *     * @param args the command line arguments     */</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">    </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">public</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">static</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">void</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> main</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">(</span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(43, 145, 175);">String</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">[]</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> args</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">)</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">{</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">        </span><span class="kwd" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(0, 0, 139);">new</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"> </span><span class="typ" style="font-family: Arial, 宋体; font-size: 14px; color: rgb(43, 145, 175);">Main</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">().</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">checkStringContains</span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">();</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;">    </span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">}</span><span class="pln" style="font-family: Arial, 宋体; font-size: 14px;"></span><span class="pun" style="font-family: Arial, 宋体; font-size: 14px;">}</span>

上述代码的执行结果如下

The string contains the substring JavaThe string does not contain the substring Pascal

                                             
0 0
原创粉丝点击