1.分析以下需求,并用代码实现:
(1)定义数字字符串数组{"010","3223","666","7890987","123123"}
(2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等,第二个数字和倒数第二个数字是相等的,依次类推)的,并逐个输出
(3)如:010 是对称的,3223 是对称的,123123 不是对称的
(4)最终打印该数组中对称字符串的个数
提示:循环获取字符串的每一个字符,依次比较第一个和最后一个,第二个和倒数第二个。。。
1 package cn.lovefat.demo03; 2 3 import java.lang.reflect.Array; 4 import java.util.ArrayList; 5 6 public class Test_1 { 7 8 /** 9 * @param args 10 */ 11 public static void main(String[] args) { 12 int n = symmetrical("11531"); 13 System.out.println(n); 14 15 } 16 public static int symmetrical(String str){ 17 int num = 0 ; 18 for(int i = 0 ; i < str.length() ; i++){ 19 int j = str.length()-i-1; 20 if(i<j){ 21 22 if( str.substring(i, i+1).equals(str.substring(j, j+1))){ 23 System.out.print(str.substring(i, i+1)+"和"+str.substring(j, j+1)+"相同"+";"); 24 num++; 25 26 } 27 else{ 28 System.out.println("bad"); 29 break; 30 } 31 32 } 33 } 34 return num; 35 } 36 37 }
这是我自己开始时做的;后来找到一个比较好的方法,是将所有的字符逆序排列。
1 package cn.lovefat.demo03; 2 3 import java.lang.reflect.Array; 4 import java.util.ArrayList; 5 6 public class Test_1 { 7 8 /** 9 * @param args 10 */ 11 public static void main(String[] args) { 12 int n = symmetrical("11531"); 13 System.out.println(n); 14 15 } 16 public static int symmetrical(String str){ 17 int num = 0 ; 18 for(int i = 0 ; i < str.length() ; i++){ 19 int j = str.length()-i-1; 20 if(i<j){ 21 22 if( str.substring(i, i+1).equals(str.substring(j, j+1))){ 23 System.out.print(str.substring(i, i+1)+"和"+str.substring(j, j+1)+"相同"+";"); 24 num++; 25 26 } 27 else{ 28 System.out.println("bad"); 29 break; 30 } 31 32 } 33 } 34 return num; 35 } 36 37 }
时间: 2024-11-04 03:56:30