String 类型题单 (洛谷)JAVA

各位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());
  
	} 

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值