各位CSDN的兄弟姐妹好,本博客是对之前在洛谷上刷的String类的汇总。个人感觉不论是Java还是c++,用String类解题还是很方便的。要想好好掌握他,特别对于初学者来说还是有些许难度的。特别是java中string类库函数还是很多很方便的,这些题也是我最初学Java时对string类懵懂时写的,写完之后感觉自己对string类的运用和理解有了质的飞跃。如今单独拿出来做一个复习吧,当然也希望对你们有用。
题目来源 :洛谷
题单如下:
各题目如下:
1, 这个题应该没啥问题,知道小写字母和大写字母的ASCII之间的关系那就没问题了。代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.next();
char a[]=s.toCharArray();
for(int i=0;i<a.length;i++)
{
if(a[i]>='a'&&a[i]<='z')
{
a[i]= (char) (a[i]-32);
}
}
System.out.print(a);
}
}
2.这个题只要找到规律,去做就完全没问题,代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String s = sc.next();
char a[]=s.toCharArray();
for(int i=0;i<a.length; i++ )
{
a[i]=(char)(a[i]+n);
while( a[i]>'z')
{
a[i]=(char)(a[i] -'z'+'a'-1);
}
}
System.out.print(a);
}
}
3.本题就有点东西了,我是将字符放进数组a里,再弄一个int 类数组b。使得 a中的每个字母都有一个数组 b[i] 与之对应,b[i]存储的是第i个字符和第i个字符后有多少个字符与本字符一样。最后找到b数组中最大和最小值判断一下是不是质数。
以error为例子图解如下所示了:
最小值有很多,随便取的,按道理是取最前面一个。
代码如下:
import java.util.Scanner;
public class Main {
public static int f(int x)
{ if(x<=1)
return 0;
for(int i=2;i<=x/i;i++)
if(x%i==0)
return 0;
return 1;
}
public static void main(String[] args) {
Scanner sc=new Scanner (System.in);
String s =sc.next();
char a[]=s.toCharArray();
int b[]=new int[100];
for(int i=0;i<a.length;i++)
{ char c=a[i];
for(int j=0;j<a.length;j++)
if(a[j]==c)
b[j]++;
}
int max=b[0],min=b[0];
for(int k=0;k<a.length;k++)
{
if(max<=b[k])
max=b[k];
if(min>=b[k])
min=b[k];
}
int sum= max - min ;
if(f(sum)==1)
{System.out.println("Lucky Word");
System.out.print(sum);
}
else
{
System.out.println("No Answer");
System.out.print("0");
}
}
}
4.这道题还是比较简单的,怎么要求,就怎么列算式,把得出得算式放在字符串里就可以了,最后输出长度即可,代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc= new Scanner(System.in);
int n;
n=sc.nextInt();
String x=sc.nextLine();
char t='+';
for(int i=0;i<n;i++)
{
String s=sc.nextLine();
String a[]=s.split(" ");
String c="";
for(int j=0;j<a.length;j++)
c=c+a[j];
char b[]=c.toCharArray();
//System.out.println(b[0]);
//System.out.println(t);
if(b[0]=='a')
t='+';
else if(b[0]=='b')
t='-';
else if(b[0]=='c')
t='*';
int sum=0;
if(b[0]=='a'||b[0]=='b'||b[0]=='c')
{
if(t=='+')
sum=Integer.parseInt(a[1])+Integer.parseInt(a[2]);
else if(t=='-')
sum=Integer.parseInt(a[1])-Integer.parseInt(a[2]);
else if(t=='*')
sum=Integer.parseInt(a[1])*Integer.parseInt(a[2]);
}
else
{
if(t=='+')
sum=Integer.parseInt(a[0])+Integer.parseInt(a[1]);
else if(t=='-')
sum=Integer.parseInt(a[0])-Integer.parseInt(a[1]);
else if(t=='*')
sum=Integer.parseInt(a[0])*Integer.parseInt(a[1]);
}
String s1= String.valueOf(sum);
//System.out.println(s1.length());
//System.out.println(sum);
if(b[0]=='a'||b[0]=='b'||b[0]=='c')
{
System.out.println(a[1]+t+a[2]+"="+sum);
System.out.println(c.length()+1+s1.length());
}
else
{
System.out.println(a[0]+t+a[1]+"="+sum);
System.out.println(c.length()+2+s1.length());
}
}
}
}
5.这道题,简单粗暴可以直接输入,然后用切割函数split切割掉空格,再拼接起来。这样的话可以熟悉String字符串的切割函数的用法。最后输出字符串内字符个数即可,代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
String s1[] =s.split(" ");
String b="";
for(int i=0;i<s1.length;i++)
b=b+s1[i];
System.out.print(b.length());
}
}