继续华为上机题练习

各位大神路过,看到题目如果太简单了,不要扔鸡蛋啦!!!!感觉华为上机题,对字符串操作的不少呀,会正则表达式,绝对有好处呀,当然是对java而言,对C来说,字符串问题还是老老实实转化为字符数组来捣鼓啊!!!!

废话不说了,上菜:

 1、StringReverse(char *strIn,char *output)找出 strIn 里面所有大写字母,将其逆序输出
 如输入:strIn:"abcHDLmnkKl",输出:output:"KLDH",

Java Code:

public class HuaWeiTest{
        static String result;
    
        static String StringReverse(String inputStr){
               String outputStr = "";
               String tempStr = inputStr.replaceAll("[^A-Z]","");    //将字符串中非大写字母用""替代

               for(int i = tempStr.length() - 1; i >= 0; i-- ){            //逆序输出
               outputStr += tempStr.charAt(i);
         }
         return outputStr;
    }
    /*测试*/
    public static void main(String[] args) {
            String iStr1 = "a  S ADFDfddfFD323s";
            System.out.println(iStr1);
           System.out.println(StringReverse(iStr1));
     }
}

2、 将输入的字符串(字符串仅包含小写字母a到z)按如下规则循环转换后输出:
 * a->b,b->c。。。若输入的字符串连续出现两个相同字母,后一个字母连续转换两次 aa转换成bc,zz转换成ab,
 * 第三次出现相同的字母按第一个算
 * int convert(char *inpuy,char *output)

Java Code:
        static String convert(String inputStr){
                 char[] tempStr = inputStr.toCharArray();
                 int i = 0;
                 String outputStr = "";
  
                 //先把所有字母都转化,最后来判断z,zz,zzz字母的转化
                 while(i <= tempStr.length-1){
                          if(i+1 < tempStr.length){
                                     if(tempStr[i+1] != tempStr[i]){
                                               tempStr[i] = (char)(tempStr[i]+1); //如果tempStr[i]的下一个字母不是它本身,则将其转为后面的字母
                                               i = i+1;
                                     }else{
                                              if(i+2 <= tempStr.length-1){   //如果第tempStr[i]的下一个字母与它相等
                                              if(tempStr[i+2] != tempStr[i]){ //进一步判断第三个字母是否跟tempStr[i]一样,如果不一样
                                                      tempStr[i] = (char)(tempStr[i]+1);
                                                      tempStr[i+1] = (char)(tempStr[i+1]+2);
                                                      i = i+2;
                                              }else{
                                                       tempStr[i] = (char)(tempStr[i]+1);
                                                       tempStr[i+1] = (char)(tempStr[i+1]+2);
                                                       tempStr[i+2] = (char)(tempStr[i]);
                                                       i = i+3;
                                              }
                                    }
                          }
               }
              if(i+1 == tempStr.length){
                       tempStr[tempStr.length - 1] += 1; //最后一个字母单独转换;
                       break;
              }
  }

  //现在来判断是z,zz,zzz转化而来的字母,将其转为a,ab,aba
  for(i = 0; i < tempStr.length; i++){
          if(tempStr[i] == 'z' + 1){
                  tempStr[i] = 'a';
          }
          if(tempStr[i] == 'z' + 2){
                  tempStr[i] = 'b';
          }
          outputStr += tempStr[i];
      }
        return outputStr;
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值