1.判断字符串是不是对称的(PHP版本),兼容中文字符.
1 function symmetry(){ 2 $str = "123爱中国0国中爱321"; 3 $len = iconv_strlen($str,'utf-8'); 4 $mid = $len/2; 5 $bFlag = true; 6 for($i=0; $i<$mid; $i++){ 7 if(iconv_substr($str, $i, 1, 'utf-8') != iconv_substr($str, $len-$i-1, 1, 'utf-8')){ 8 $bFlag = false; 9 break; 10 } 11 } 12 if($bFlag){ 13 echo '原字符串是对称的'; 14 }else{ 15 echo '原字符串不是对称的'; 16 } 17 }
PS:输出字符串以什么为对称抽:
1 function symmetry(){ 2 $str="123爱中国0国中爱321"; 3 $len=iconv_strlen($str,'utf-8');//计算字符串长度 4 if($len%2==0)//如果字符串长度为偶数 5 { 6 $mid=$len/2;//计算字符串一半的长度 7 for($i=0;$i<$mid;$i++) 8 { 9 if(iconv_substr($str,$i,1,'utf-8')==iconv_substr($str,$len-$i-1,1,'utf-8')) 10 { //截取对称位置字符串时要减1是因为字符串索引从0开始 11 $eq++;//比较对称位置的字符是否相等,如果相等计数器自增 12 } 13 } 14 if($eq==$mid)echo '原字符串是对称的';//如果对称位置字符串相等的个数恰好等于字符串一半的长度,说明原字符串是对称的 15 } 16 elseif($len%2!=0)//如果字符串长度为奇数,说明字符串只能关于最中间的字符串对称 17 { 18 $mid=ceil($len/2)-1;//计算最中间字符的序号 19 for($i=0;$i<$mid;$i++)//这里我们比较的对称位置是出去最中间字符以外的位置 20 { 21 if(iconv_substr($str,$i,1,'utf-8')==iconv_substr($str,$len-$i-1,1,'utf-8')) 22 { //截取对称位置字符串时要减1是因为字符串索引从0开始 23 $eq++;//比较对称位置的字符是否相等,如果相等计数器自增 24 } 25 } 26 if($eq==$mid)echo '原字符串是关于字符"'.iconv_substr($str,$mid,1,'utf-8').'"对称的'; 27 //如果对称位置字符串相等的个数恰好等于字符串长度一半减去1,说明原字符串是关于中间字符对称的 28 } 29 }
2.判断字符串是不是对称的(JAVA版本)
1 public class IsSymmetry { 2 public static void main(String[] args) { 3 String str = "DEED"; 4 int strLength = str.length(); 5 boolean bSymmetry = true; 6 for(int i=0; i<strLength; i++){ 7 if(str.charAt(i) != str.charAt(strLength - i -1)){ 8 bSymmetry = false; 9 break; 10 } 11 } 12 if (bSymmetry) 13 System.out.println("输入字符串是回文."); 14 else 15 System.out.println("输入字符串不是回文."); 16 } 17 }