求Java大神, 任给字符串,判断其是否为“abcttcba”型的字符串。
发布网友
发布时间:2022-04-18 19:59
我来回答
共7个回答
热心网友
时间:2022-04-18 21:28
字符串,判断是否为 abcttcba 型字符串
那么有几种可能
第一, aba , aa , aaaaaaaaa这类字符串对称的,符合要求吗?
如果符合要求,可以使用下面的方法判断
// 简单版 ,只能判断是否是对称字符串, 比如 aba aa
private static boolean isMatchEasy(String str) {
String str2 = new StringBuilder(str).reverse().toString();// 翻转字符串
return str2.equals(str);
}
第二,字符串长度是否有要求,可以重复吗 abattaba 符号要求吗?
如果abattaba 这样也符号要求,可以使用下面的方法判断
// 中等版,只能粗略判断,如果字符串是11111111, 或者abbttbba 也会判断为符合要求
private static boolean isMatchPlain(String str) {
if (str.length() != "abcttcba".length()) {// 如果长度和指定的字符串不匹配,那么返回假
return false;
}
String str2 = new StringBuilder(str).reverse().toString();// 翻转字符串
return str2.equals(str);
}
第三,如果abattaba 不符合要求, 也就是前半部分的字符都不许重复,
那么要使用下面的方法判断
// 复杂版,严格判断,调用该方法,判断字符串是否符合要求
private static boolean isMatch(String str) {
//如果没有字符串长度*,可以删除,第一个if判断
if (str.length() != "abcttcba".length()) {// 如果长度和指定的字符串不匹配,那么返回假
return false;
}
String str2 = new StringBuilder(str).reverse().toString();// 翻转字符串
if (str2.equals(str)) {// 如果翻转前和翻转后一致,那么继续判断 前半部分每个字符是否重复
boolean flag = true;
ok: for (int i = 0; i < str.length() / 2 - 1; i++) {
for (int j = i + 1; j < str.length() / 2; j++) {
if (str.charAt(i) == str.charAt(j)) {// 如果有一个字符和后面的字符重复
flag = false;// 那么修改为false
break ok;// 跳出循环.不在判断了
}
}
}
return flag;// 返回 (如果刚才没有修改为false,那么这里会返回true)
} else {
return false;
}
}
最后 综合起来,运行测试
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("请输入任意一行字符串:");
Scanner input = new Scanner(System.in);// 创建一个扫描器,用于从控制台读取输入的字符串
String str = input.nextLine().trim();// nextLine()表示读取一行
// trim()表示去掉字符串前后的空白
System.out.println(isMatch(str));
// System.out.println(isMatchPlain(str));
// System.out.println(isMatchEasy(str));
}
// 复杂版,严格判断,调用该方法,判断字符串是否符合要求
private static boolean isMatch(String str) {
//如果没有字符串长度要求,就删除第一个if
if (str.length() != "abcttcba".length()) {// 如果长度和指定的字符串不匹配,那么返回假
return false;
}
String str2 = new StringBuilder(str).reverse().toString();// 翻转字符串
if (str2.equals(str)) {// 如果翻转前和翻转后一致,那么继续判断 前半部分每个字符是否重复
boolean flag = true;
ok: for (int i = 0; i < str.length() / 2 - 1; i++) {
for (int j = i + 1; j < str.length() / 2; j++) {
if (str.charAt(i) == str.charAt(j)) {// 如果有一个字符和后面的字符重复
flag = false;// 那么修改为false
break ok;// 跳出循环.不在判断了
}
}
}
return flag;// 返回 (如果刚才没有修改为false,那么这里会返回true)
} else {
return false;
}
}
// 中等版,只能粗略判断,如果字符串是11111111, 或者abbttbba 也会判断为符合要求
private static boolean isMatchPlain(String str) {
if (str.length() != "abcttcba".length()) {// 如果长度和指定的字符串不匹配,那么返回假
return false;
}
String str2 = new StringBuilder(str).reverse().toString();// 翻转字符串
return str2.equals(str);
}
// 简单版 ,只能判断是否是对称字符串, 比如 aba aa
private static boolean isMatchEasy(String str) {
String str2 = new StringBuilder(str).reverse().toString();// 翻转字符串
return str2.equals(str);
}
}
热心网友
时间:2022-04-18 22:46
是判断对称么?
public static void main(String[] args) {
String s = "输入你给的字符串";//判断其是否为“abcttcba”型的字符串。 String b = s.substring(0,4);
String after=s.substring(4,8);
String reverse = "";
for (int i = 0; i < after.length(); i++){
reverse = after.charAt(i) + reverse;
}
if(b.endsWith(reverse)){
System.out.println("符合格式");
}else{
System.out.println("不符合格式");
}
}
热心网友
时间:2022-04-19 00:21
我暂且认为你的意思是,检查输入的字符串是否满足类似"abcttcba"型的对称字符串
import java.util.Scanner;
public class TestType {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true){
boolean sign = true;
System.out.println("请输入一串字符串,系统会自动识别是否符合(abcttcba)类型:");
String str = scanner.next();
if(str.equals("-1")){//输入-1,可推出系统
System.exit(0);;
}else{
char[] a = str.toCharArray();
if(a.length % 2 != 0){//对称类型字符串长度必定是偶数,首先可用是否是偶数作为判断条件
System.out.println("该字符串"+str+"----不符合(abcttcba)类型!");
}else{
for (int i = 0; i < a.length/2; i++) {//循环,让第一个与最后一个做比较,看是否一样
if(a[i] != a[a.length-1-i]){//如果存在一个对应位置字符不相等,跳出循环
sign = false;
System.out.println("该字符串"+str+"----不符合(abcttcba)类型!");
break;
}
}
if(sign){
System.out.println("该字符串"+str+"----符合(abcttcba)类型!");
}
}
}
}
}
}
热心网友
时间:2022-04-19 02:12
public static void main(String[] args) {
StringBuffer testStr1 = new StringBuffer("asd112dsa");
String testStr2 = testStr1.toString();
testStr1 = testStr1.reverse();
System.err.println(testStr1.toString().equals(testStr2));
}
热心网友
时间:2022-04-19 04:20
public boolean test (String str){
return "abcttcba".equals(str);
}
热心网友
时间:2022-04-19 06:45
String str = "abcttcba";
boolean result = true;
int count =(str.length()-1)/2;
for (int x=0;x<=count;x++ ){
if(str.charAt(x)!=str.charAt(str.length()-1-x)){
result = false;
break;
}
}
if(!result)
System.out.println("该字符串是不对称的");
else
System.out.println("该字符串是对称的");
热心网友
时间:2022-04-19 09:26
请使用正则表达式