1.查找两个字符串a,b中的最长公共子串
查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
String str1 = sc.nextLine();
String str2 = sc.nextLine();
int max = 0;
String tmp = "";
if(str1.length() > str2.length()){
tmp = str2;
str2 = str1;
str1 = tmp;
}
for(int i = 0; i < str1.length(); i++){
for(int j = i+1; j <= str1.length(); j++){
if(str2.contains(str1.substring(i,j))){
max = str1.substring(i,j).length() >= max ? str1.substring(i,j).length() : max;
}
}
}
for(int i = 0; i < str1.length(); i++){
if(str2.contains(str1.substring(i,max+i))){
System.out.println(str1.substring(i,max+i));
break;
}
}
}
}
}
2.挑7
输出7有关数字的个数,包括7的倍数,还有包含7的数字(如17,27,37…70,71,72,73…)的个数
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
String str;
int count=0;
for(int i=1;i<=n;i++){
str=String.valueOf(i);
if(str.contains("7") || i%7==0){
count++;
}
}
System.out.println(count);
}
}
}
3.找出字符串中第一个只出现一次的字符
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
char[] strs=in.nextLine().toCharArray();
HashMap<Character,Integer> map=new HashMap();
for(int i=0;i<strs.length;i++){
if(map.containsKey(strs[i])){
map.put(strs[i],map.get(strs[i])+1);
}else{
map.put(strs[i],1);
}
}
for(int i=0;i<strs.length;i++){
if(map.get(strs[i])==1){
System.out.println(strs[i]);
break;
}
}
if(!map.containsValue(1)){
System.out.println(-1);
}
}
}
}
4.提取不重复的整数
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
保证输入的整数最后一位不是0。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i=sc.nextInt();
List<Integer> li=new ArrayList<Integer>();
while(i!=0){
int t=i%10;
i=i/10;
if(li.contains(t)){
continue;
}
li.add(t);
}
for(int x:li){
System.out.print(x);
}
}
}
5.统计字符
输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int isLetter=0,isDigit=0,isWhitespace=0,isQt=0;
char[] str = sc.nextLine().toCharArray();
for(int i=0;i<str.length;i++){
if(Character.isLetter(str[i])){//判断是否为字母
isLetter++;
}else if(Character.isDigit(str[i])){ //判断是否为数字
isDigit++;
}else if(Character.isWhitespace(str[i])){ //判断是否为空格
isWhitespace++;
}else{
isQt++;
}
}
System.out.println(isLetter);
System.out.println(isWhitespace);
System.out.println(isDigit);
System.out.println(isQt);
}
}
}