本人是一个初入java领域的一名小白,所以每天会练习几个java题,每一段代码有自己写的,有从网上借鉴的,由于来源已经记不清了,所以只能在这里表示感谢。这只是一个java小白日常笔记,可以给予一些和我一样的小白提供解题思路,所以大神们请手下留情~~
——————————
- 统计出包含英文字母_空格_数字和其它字符的个数
- 一比特与2比特字符
- 两个子串
- 判断题
- 区间表达
- 删除字符串中出现次数最少的字符
- 提取不重复的整数
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));
}