用Java编写一个程序,检查一个字符串是否可以通过将另一个字符串旋转2个位置得到。
假设我们有两个字符串“a”和“b”,任务是找出是否可以通过将字符串“a”逆时针或顺时针旋转正好2个位置来获得字符串“b”。例如,
输入1 −
a = google b = legoog
输出 −
True
解释 − 字符串“google”可以逆时针旋转两个位置,得到字符串“legoog”。因此,我们返回True。
输入2 −
a = tuorialst b = tutorials
输出 −
False
解释 − 字符串“tuorialst”无法通过任何方向旋转两个位置得到另一个字符串“tutorials”。因此,我们返回False。
解决此问题的方法
对于给定的两个字符串,在此方法中我们有两种情况−
对于逆时针旋转
对于顺时针旋转。
首先,如果两个字符串的长度不同,则返回false;否则,如果两个字符串的长度小于或等于“2”,则返回True。
在其他情况下,我们将检查字符串“b”通过逆时针旋转两个位置得到的子字符串是否等于字符串“a”,然后返回True。否则返回False。
类似地,如果通过顺时针旋转字符串“b”两个位置,它等于字符串“a”,则返回True,否则返回false。
获取两个输入字符串“a”和“b”
布尔函数checkRotated(string a, string b)获取两个字符串“a”和字符串“b”,并返回它们是否可以通过逆时针或顺时针旋转字符串“b”来相等。
检查字符串“a”和字符串“b”的长度。
通过逆时针旋转两个位置找到字符串“b”的子字符串。
现在检查结果子字符串是否等于字符串“a”,如果相等则返回true。
通过顺时针旋转两个位置找到字符串“b”的子字符串。
现在检查结果子字符串是否等于字符串“a”,如果相等则返回true。
如果字符串不相等,则返回false。
示例
public class Solution{
static boolean checkRotated(String str1, String str2){
String s1="";
String s2="";
int len= str2.length();
if (str1.length() != str2.length())
return false;
s1= str2.substring(len-2, len)+ str2.substring(0,len-2);
s2= str2.substring(0,2) + str2.substring(0,2);
return (str1.equals(s1) || str1.equals(s2));
}
public static void main(String[] args){
String s1= "google";
String s2= "legoog";
System.out.println(checkRotated(s1,s2) ? "True":"False");
}
}输出
如果我们运行以上代码,它将打印输出为:
False
由于以上代码的输出为“True”,它将打印“True”。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP