字符串转换算法

/*2. 编写一个程序,给定一个字符串“aaa果4金5a”。
* 要求:如果出现数字,把数字后面的字符替换成数字的个数个。比如这个字符串要求被替换成“aaa果金金金金aaaaa”。*/

package com.rachel02.www;

public class NumberToString {

public String ChangeNumber( String str )  
//将str里的数字转换成n个后面的字符
{
    char st[] = new char[50];  
    int j=0;
    for (int i = 0; i < str.length(); i++)  //遍历字符串
    {
        char ch = str.charAt(i);
        if( ch>=48 && ch<=57 )   //如果发现数字
        {
            //numberToString[j].index = i;       //出现数字的ch下标
            //numberToString[j].number = ch[i]-48;   //数字的值是几
            //j++;
            for(int m=0; m<(ch-48); m++)
            {
                if( (i+1)<str.length())  
                //如果当前数字不是str的最后一个,再操作
                {
                    st[j++] = str.charAt(i+1);
                }
            }
        }
        else {
            st[j++] = ch;   //st是str操作后的的字符数组
        }
    }
    String s = String.valueOf(st);   //char[] -> string
    System.out.println(s);
    return s;
}

}

//

/*
5. 给你一个字符串数组 String []strings=new String{“tom”,”is”,”a”,”boy”};
然后让你输入一句话,如果你的输入和他给的一样的话,就原文不动的输出。如你输入 tom is a boy就输出 tom is a boy。
但是如果你输入tom is an open,输出的时候要把一样的写下来,不一样的找有没有对应的字母一样的,
如果有就在那个一样的字母后加一个”?”
//循环匹配
*/
public class StringShow {

final String strings[] = { "tom", "is", "a", "boy"}; //固定字符串
public String FindSame(String str)    
{
    String string = null;            //!!!返回的字符串
    if( str.equals("tom is a boy") ) 
    //先判断,如果输入的字符串与strings相等,就直接输出
    {
        return str;
    }
    else            //如果不相等,则开始
    {
        int number = 0;        //字符个数纪录,遇到空格判断是否有单词
        String word = null;    //用来记录字符串中的单词
        for(int i=0; i<str.length(); i++)     
        // 逐个拿出字符串中的字符,判断是否为空格
        {
            char ch = str.charAt(i);
            if( ch != 32 )                   //先判断不是空格的情况
            {
                if( word==null )             
            //若word==null,不能word+=""+ch;这样word==nullch
                {
                    word = ""+ch;
                }
                else {
                    word += ""+ch;
                }
                //number++;
            }
            if( ch==32 || (i==str.length()-1) )    //找到了空格
            {
                if( number>0 )  //有单词 ,就要开始查找
                {
                    for(int j=0; j<strings.length; j++)   //逐个匹配
                    {

                        if(word.equals(strings[j]))                                  //如果word == strings[i],就添加到输出字符串
                        {
                            if(string==null)
                            {
                                string = word+" ";
                            }
                            else 
                            {
                                string += word+" ";       //...
                            }
                    System.out.println("每一次的string:"+string);
                        }
                    }
                    word = null;       //word和number都要清空
                    number = 0;
                }       
            }
        }
        return string;
    }
}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值