String字符串java习题(二)

一、编写一个方法public static int count(String src, String key), 从src内容中查找出key的出现次数:

  如:源串为"String testString testString stringtestString abctest",查找“test”时应该返回4。

分析:最笨的方法,将该字符串转化为字符数组依次检索,如果连续的四次检索都是满足第二个字符数组时,则计数器加一。

package T;

import java.text.Format;
import java.util.Locale;
import java.util.ResourceBundle;

public class Test {

  public static void main(String[] args) {
    System.out.println(count("String testString testString stringtestString abctest","test"));
  }
  public static int count(String src,String key){
    char[] c=src.toCharArray();
    char[] c1=key.toCharArray();
    int temp=0;
    for (int i = 0; i < c.length-3; i++) {
      if(c[i]==c1[0]&&c[i+1]==c1[1]&&c[i+2]==c1[2]&&c[i+3]==c1[3])
          temp++;
    }
    return temp;
  }
}

二、 编写一个方法public String initcap(String source); 把src内容中的每个单词的首字母改成大写,其它不变。

分析:最笨的方法,直接判断一句话的空格和逗号,在空格和逗号的后面直接将第一个字母转为大写。

package T;


import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Translate {
  public static void main(String[] args) {
    String str = "hello world xiaoming I come in";    System.out.println(str);
    StringBuffer stringbf = new StringBuffer();//线程安全的字符串缓冲流
    Matcher m = Pattern.compile("([a-z])([a-z]*)", Pattern.CASE_INSENSITIVE).matcher(str);//正则表达式匹配小写字母

    while (m.find()) {
      m.appendReplacement(stringbf, m.group(1).toUpperCase() + m.group(2).toLowerCase());//开始拼接
    }
    System.out.println(m.appendTail(stringbf).toString());
  }
}

三、编写一个Java方法,生成5个不重复的英文小写字母,并按字母顺序排列好

分析:首先取5个不同的随机小写字母,然后对这几个小写字母进行排序。

package Test;

import java.util.Random;

public class Test {

  public static void main(String[] args) {
    StringBuffer sb = new StringBuffer();
    sb = getString();
    sort(sb);
    System.out.println("排序好的字符串:");
    System.out.println(sb);
  }

  public static StringBuffer getString() {//随机取五个不同字符
    String a = new String("abcdefghijklmnopqrstuvwxyz");
    char[] b = a.toCharArray();

    int[] a1 = new int[5];
    for (int i = 0; i < 5; i++) {
      a1[i] = getRandom();
    }
    check(a1);

    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < 5; i++) {
      sb.append(b[a1[i]]);
    }
    System.out.println("随机的不同的组合字符串:");
    System.out.println(sb);
    return sb;
  }

  public static void sort(StringBuffer s) {//给字符串排序
    for (int i = 0; i < s.length() - 1; i++) {
      for (int j = 1; j < s.length() - i; j++) {
        if (s.charAt(j) < s.charAt(j-1)) {

          char a = s.charAt(j-1);
          char b=s.charAt(j);
          s.replace(j-1, j, b + "");
          s.replace(j, j + 1, a + "");
        }
      }
    }
  }

  public static int getRandom() {//得到随机数
    Random r = new Random();
    return r.nextInt(26);
  }

  public static void check(int[] a) {//判断这五个随机数是否有相同的
    for (int i = 0; i < 5; i++) {
      for (int j = i+1; j < 5 ; j++) {
        if (a[i] == a[j]) {
          a[j] = getRandom();
          check(a);
        }else if(i==4){
          return;
        }
      }
    }

  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值