java字符串数组取别名,冒泡排序




/**
 * 有一个字符串数组,我们要对这个字符串数组取别名,以使得字符串数组中,每个字符串都是不相同的,规则如下
 * 依次遍历字符串数组,如果是第一次出现,则别名为本身,如果重复出现,则别名为字符串加n,n从1开始递增,
 * 需要确保别名在已经便利的字符串中不重复
 * @author lenovo
 *
 */
public class Ceshi {
 public static void main(String[] args) {
    String[] str ={"aaa","bbb","cccc","bbb","bbb","ddd","aaa"};
    for (int i = 0; i < str.length; i++) {
    int flag=0;
     for (int j =i+1; j < str.length; j++) {
      if(str[i]==str[j]){
      flag++;
      str[j]=str[j]+flag;
      }
     }
    }
    for (int i=0;i<str.length;i++){
      System.out.print(str[i]+",");
    }
 }
}

打印结果:
aaa,bbb,cccc,bbb1,bbb2,ddd,aaa1,



//上面的结果可以但是String类型的字符串比较不能用==,应该用equals
代码如下:
public class ArrString2 {
 public static void main(String[] args) {
  String[] strArra = {"abc","abc","abc","abcd","abcd","abcde","abc","abc","abc","abcd","abcd","abcde"};
  String[] strOtherName = new String[strArra.length];
  
  for (int i = 0; i < strArra.length; i++) {//遍历原始数组
   for (int j = 0; j < strOtherName.length; j++) {//遍历别名数组
    if(strArra[i].equals(strOtherName[j]) ){//在别名数组中已经存在原始数组中的某个元素
     int count = 0;//计数变量
     for (int i2 = 0; i2 < i; i2++) {//遍历原始数组中已经取过别名的的元素
      if(strArra[i2].equals(strOtherName[j])){
       count ++;//遍历原始数组中已经取过别名的的元素中和当前别名数组中的元素值相等时,计数count加1
      } 
     }
     if(count > 0){
      strOtherName[i] = strArra[i]+count;
     } 
     break;
    }else{  
     strOtherName[i] = strArra[i];
    }
   }
  }
  
  for (String string : strArra) {
   System.out.print(string+"  "); 
  }
  System.out.println();
  for (String string : strOtherName) {
   System.out.print(string+"  ");
  }
 }

}

执行结果:
原始数据:    abc  abc    abc    abcd  abcd    abcde  abc    abc    abc    abcd    abcd    abcde 
执行后结果:abc  abc1  abc2  abcd  abcd1  abcde  abc3  abc4  abc5  abcd2  abcd3  abcde1 







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值