java每日练习_day5

本人是一个初入java领域的一名小白,所以每天会练习几个java题,每一段代码有自己写的,有从网上借鉴的,由于来源已经记不清了,所以只能在这里表示感谢。这只是一个java小白日常笔记,可以给予一些和我一样的小白提供解题思路,所以大神们请手下留情~~
——————————

  1. 统计出包含英文字母_空格_数字和其它字符的个数
  2. 一比特与2比特字符
  3. 两个子串
  4. 判断题
  5. 区间表达
  6. 删除字符串中出现次数最少的字符
  7. 提取不重复的整数

1. 统计出包含英文字母_空格_数字和其它字符的个数

public static void main(String[] args) {
		String s="1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\\\/;p0-=\\\\][";
		int sum1=getEnglishCharCount(s);
		System.out.println(sum1);
		int sum2=getBlankCharCount(s);
		System.out.println(sum2);
		int sum3=getNumberCharCount(s);
		System.out.println(sum3);
		int sum4=s.length()-sum1-sum2-sum3;
		System.out.println(sum4);

	}
	/**
     * 统计出英文字母字符的个数。
     * 
     * @param str 需要输入的字符串
     * @return 英文字母的个数
     */
    public static int getEnglishCharCount(String str)
    {
    	char [] chs=str.toCharArray();
    	int count=0;
    	for(int x=0;x<chs.length;x++) {
    		if((chs[x]>='a' && chs[x]<='z')||(chs[x]>='A' && chs[x]<='Z')) {
    			count++;
    		}
    	}
        return count;
    }
    
    /**
     * 统计出空格字符的个数。
     * 
     * @param str 需要输入的字符串
     * @return 空格的个数
     */
    public static int getBlankCharCount(String str)
    {
    	char [] chs=str.toCharArray();
    	int count=0;
    	for(int x=0;x<chs.length;x++) {
    		if(chs[x]==' ') {
    			count++;
    		}
    	}
        return count;
    }
    
    /**
     * 统计出数字字符的个数。
     * 
     * @param str 需要输入的字符串
     * @return 英文字母的个数
     */
    public static int getNumberCharCount(String str)
    {
    	char [] chs=str.toCharArray();
    	int count=0;
    	for(int x=0;x<chs.length;x++) {
    		if(chs[x]>='0' && chs[x]<='9') {
    			count++;
    		}
    	}
        return count;
    }

2. 有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。
示例 1:
输入:
bits = [1, 0, 0]
输出: True
解释:
唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。
示例 2:
输入:
bits = [1, 1, 1, 0]
输出: False
解释:
唯一的编码方式是两比特字符和两比特字符。所以最后一个字符不是一比特字符

public boolean isOneBitCharacter(int[] bits) {
        int i = 0;
        while(i < bits.length - 1) {
            if(bits[i] == 1) i += 2;
            else i++;
        }
        return (i == bits.length - 1);
    }

3. 题目描述
给定一个字符串s, 请计算输出含有连续两个s作为子串的最短字符串。 注意两个s可能有重叠部分。例如,“ababa"含有两个"aba”.
输入描述:
输入包括一个字符串s,字符串长度length(1 ≤ length ≤ 50),s中每个字符都是小写字母.
输出描述:
输出一个字符串,即含有连续两个s作为子串的最短字符串。
示例1
输入 abracadabra
输出 abracadabracadabra

private static String getTwice(String str) {
		int count=0;
        String sub;
        for(int i=1;i<str.length();i++){
            String subleft = str.substring(0,i);
            String subright = str.substring(str.length()-i,str.length());
            if(subleft.equals(subright)){
                sub=subright;count=i;
            }
        }
        sub=str.substring(count,str.length());
        String res = str+sub;
        return res;
	}

4. 题目描述:牛牛参加了一场考试,考试包括n道判断题,每做对一道题获得1分,牛牛考试前完全没有准备,所以考试只能看缘分了,牛牛在考试中一共猜测了t道题目的答案是"正确",其他的牛牛猜为"错误"。考试结束后牛牛知道实际上n道题中有a个题目的答案应该是"正确",但是牛牛不知道具体是哪些题目,牛牛希望你能帮助他计算可能获得的最高的考试分数是多少。
输入描述:
输入包括一行,一行中有三个正整数n, t, a(1 ≤ n, t, a ≤ 50), 以空格分割
输出描述:
输出一个整数,表示牛牛可能获得的最高分是多少。
示例1
输入3 1 2
输出2

private static int getSum(int n, int t, int a) {
		//正确的
		int t1=t;
		int a1=a;
		//错误的
		int t2=n-t;
		int a2=n-a;
		return Math.min(t1, a1)+Math.min(t2, a2);
	}

5. 题目描述
牛牛的老师给出了一个区间的定义:对于x ≤ y,[x, y]表示x到y之间(包括x和y)的所有连续整数集合。例如[3,3] = {3}, [4,7] = {4,5,6,7}.牛牛现在有一个长度为n的递增序列,牛牛想知道需要多少个区间并起来等于这个序列。
例如:
{1,2,3,4,5,6,7,8,9,10}最少只需要[1,10]这一个区间
{1,3,5,6,7}最少只需要[1,1],[3,3],[5,7]这三个区间
输入描述:
输入包括两行,第一行一个整数n(1 ≤ n ≤ 50),
第二行n个整数a[i](1 ≤ a[i] ≤ 50),表示牛牛的序列,保证序列是递增的。
输出描述:
输出一个整数,表示最少区间个数。
示例1
输入
5
1 3 5 6 7
输出 3

public class 区间表达_04 {
	public static void main(String[] args) {
		String s="5 1 6 10 20 32 49";
		String [] ss=s.split(" +");
		int sum=getSum(ss);
		System.out.println(sum);
	}
	private static int getSum(String[] ss) {
		
		int [] temp=new int[ss.length-1];
		for(int i=1;i<ss.length;i++) {
			temp[i-1]=Integer.parseInt(ss[i]);
		}
		int count=0;
		for(int i=1;i<temp.length;i++) {
			if(temp[i]!=temp[i-1]+1) {
				count++;
			}
		}
		return count+1;
	}
}

6. 题目描述:实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
示例1:
abcdd
dd

private static String getMost(String s) {
		char [] chs=s.toCharArray();
		int [] counts=new int[chs.length];
		int index=0;
		for(int x=0;x<chs.length;x++) {
			for(int y=0;y<chs.length;y++) {
				if(chs[x]==chs[y]) {
					counts[index]++;
				}
			}
			index++;
		}
		//找到数组的最小值
		int min=counts[0];
		for(int m=0;m<counts.length;m++) {
			if(min>counts[m]) {
				min=counts[m];
			}
		}
		String new_str="";
		for(int n=0;n<counts.length;n++) {
			if(min==counts[n]) {
				continue;
			}else {
				new_str+=chs[n];
			}
		}
		return new_str;
	}

7. 题目描述: 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
示例1:
9876673
37689

public static void main(String[] args) {
		StringBuffer sb=new StringBuffer();
		int n=9876673;
		int len=(""+n).length();
		for(int x=0,m=1;x<len;x++,m*=10) {
			sb.append(n/m%10);
		}
		//System.out.println(sb.charAt(0));
		ArrayList<Character> al=new ArrayList<Character>();
		for(int y=0;y<sb.length();y++) {
			if(!al.contains(sb.charAt(y))) {
				al.add(sb.charAt(y));
			}
		}
		String s="";
		for(int z=0;z<al.size();z++) {
			s+=al.get(z);
		}
		System.out.println(Integer.parseInt(s));
	}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值