洛谷[入门5]字符串答案(java)

目录

P5733 【深基6.例1】自动修正

P1914 小书童——凯撒密码

P1125 [NOIP2008 提高组] 笨小猴 

P1957 口算练习题

P5015 [NOIP2018 普及组] 标题统计

P5734 【深基6.例6】文字处理软件

 P1308 [NOIP2011 普及组] 统计单词数

P1765 手机

P3741 honoka的键盘

P1321 单词覆盖还原

P1553 数字反转(升级版)

P1603 斯诺登的密码

P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here

P1597 语句解析

P1598 垂直柱状图


P5733 【深基6.例1】自动修正

import java.util.Scanner;

public class Main {
   public static void main(String[] args){
       Scanner input=new Scanner(System.in);
       String str=input.next();
       String str1=str.toUpperCase();
       System.out.println(str1);
   }
}

P1914 小书童——凯撒密码

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        String str=sc.next();
        char[] array=str.toCharArray();
        StringBuilder password=new StringBuilder();
        for(char ch: array){
            if(ch>='a'&&ch<='z'){
                //向后移动n位
                ch=(char)('a'+(ch-'a'+n)%26);
            }
            password.append(ch);
        }
        String str1=password.toString();
        System.out.println(str1);
    }
}

P1125 [NOIP2008 提高组] 笨小猴 

import java.util.Scanner;

public class Main {
   public static void main(String[] args){
       Scanner sc=new Scanner(System.in);
       String str=sc.next();
       char[] array=str.toCharArray();
       int[] counts=new int[26];
       for(char ch:array){
           if(ch>='a'&&ch<='z'){
               //每个索引对于一个小写字母
               counts[ch-'a']++;
           }
       }
       int maxn=0;
       int minn=Integer.MAX_VALUE;
       for(int count:counts){
          if(count!=0){
              maxn=Math.max(maxn,count);
              minn=Math.min(minn,count);
          }
       }
       boolean isLucky=(maxn-minn>1)&&isPrime(maxn-minn);
       if(isLucky){
           System.out.println("Lucky Word");
           System.out.println(maxn-minn);
       }else{
           System.out.println("No Answer");
           System.out.println(0);
       }
   }

    private static boolean isPrime(int n){
       if(n<=1){
           return false;
       }
       for(int i=2;i*i<=n;i++){
           if(n%i==0){
               return false;
           }
       }
        return true;

    }
}

P1957 口算练习题

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = Integer.parseInt(scanner.nextLine());
        String operation = "";
        for (int i = 0; i < num; i++) {
            String line = scanner.nextLine();
            String result = "";
            //使用正则表达式分割字符串,将分割后的子字符串放在数组中
            String[] array = line.split("\\s+");
            int a, b;
            if (line.startsWith("a")) {
                operation = "a";
                a = Integer.parseInt(array[1]);
                b = Integer.parseInt(array[2]);
            } else if (line.startsWith("b")) {
                operation = "b";
                a = Integer.parseInt(array[1]);
                b = Integer.parseInt(array[2]);
            } else if (line.startsWith("c")) {
                operation = "c";
                a = Integer.parseInt(array[1]);
                b = Integer.parseInt(array[2]);
            } else {
                a = Integer.parseInt(array[0]);
                b = Integer.parseInt(array[1]);
            }
            switch (operation) {
                case "a":
                    result = a + "+" + b + "=" + (a+b);
                    break;
                case "b":
                    result = a + "-" + b + "=" + (a-b);
                    break;
                case "c" :
                    result = a + "*" + b + "=" + (a*b);
                    break;
            }
            System.out.println(result + "\n" + result.length());
        }
        scanner.close();
    }
}

P5015 [NOIP2018 普及组] 标题统计

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str=sc.nextLine();
        String str1=str.replaceAll("[\\s\n]+","");
        System.out.println(str1.length());
    }
}

P5734 【深基6.例6】文字处理软件


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        String start = sc.next();
        while(sc.hasNext()) {
            int num=sc.nextInt();   //执行操作的序号
            switch (num) {
                case 1:
                    start = start.concat(sc.next());
                    System.out.println(start);
                    break;
                case 2:
                    int a=sc.nextInt(),b=sc.nextInt();
                    start=start.substring(a,a+b);
                    System.out.println(start);
                    break;
                case 3:
                    int index=sc.nextInt(); //插入的起始位置
                    String sub=sc.next();   //子串
                    start=start.substring(0,index)+sub+start.substring(index);
                    System.out.println(start);
                    break;
                case 4:
                    System.out.println(start.indexOf(sc.next()));
                    break;
            }
        }
    }
}

 P1308 [NOIP2011 普及组] 统计单词数

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num=0,flag=0,index=0;
        String s= sc.nextLine().toLowerCase();
        String str=sc.nextLine().toLowerCase();
        String[] arr=str.split(" ");
        for(int i=0;i<arr.length;i++){
            if(s.equals(arr[i])){
                num++;
            }
            if(num==1){
                flag=1;
            }
            if(flag==0){
                index+= arr[i].length()+1;
            }
        }
        if(num==0){
            System.out.println("-1");
        }else{
            System.out.println(num+" "+index);
        }

    }
}

P1765 手机

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count=0;
        String str=sc.nextLine();
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)=='a'||str.charAt(i)=='d'||str.charAt(i)=='g'||str.charAt(i)=='j'||str.charAt(i)=='m'||str.charAt(i)=='p'||str.charAt(i)=='t'||str.charAt(i)=='w'){
                count++;
            }else if(str.charAt(i)=='b'||str.charAt(i)=='e'||str.charAt(i)=='h'||str.charAt(i)=='k'||str.charAt(i)=='n'||str.charAt(i)=='q'||str.charAt(i)=='u'||str.charAt(i)=='x'){
                count+=2;
            }else if(str.charAt(i)=='c'||str.charAt(i)=='f'||str.charAt(i)=='i'||str.charAt(i)=='l'||str.charAt(i)=='o'||str.charAt(i)=='r'||str.charAt(i)=='v'||str.charAt(i)=='y'){
                count+=3;
            }else if(str.charAt(i)=='s'||str.charAt(i)=='z'){
                count+=4;
            }else{
                count++;
            }
        }
        System.out.print(count);
    }
}

P3741 honoka的键盘

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count=0;
        int n=sc.nextInt();
        sc.nextLine();//消耗换行符
        String str=sc.nextLine();
        while(str.contains("VK")){
            str=str.replaceFirst("VK","XX");
            count++;
        }
        if(str.contains("VV")||str.contains("KK")){
            count++;
        }
        System.out.println(count);
    }
}

P1321 单词覆盖还原

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s=sc.next();
        int count1=0;
        int count2=0;
        char[] s1=s.toCharArray();
        for(int i=0;i<s1.length-2;i++){
            if(s1[i]=='b'||s1[i+1]=='o'||s1[i+2]=='y'){
                count1++;
            }
        }
        for(int i=0;i<s1.length-3;i++){
            if(s1[i]=='g'||s1[i+1]=='i'||s1[i+2]=='r'||s1[i+3]=='l'){
                count2++;
            }
        }
        System.out.println(count1);
        System.out.println(count2);
    }
}

P1553 数字反转(升级版)


import java.util.Scanner;
/*
整数反转 升级版
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s1 = sc.next();
        int index=0;
        for(int i=0;i<s1.length();i++) {
            if(s1.charAt(i)=='.') {
                index=1;
                break;
            } else if(s1.charAt(i)=='/') {
                index=2;
                break;
            } else if(s1.charAt(i)=='%') {
                index=3;
                break;
            }
        }
        String[] s2 = s1.split("[.|//|%]"); //获取到分隔后的一部分或两部分
        StringBuilder sb1 = new StringBuilder(s2[0]);
        StringBuilder sb2 = null;
        if(index==1 || index==2) {  //若可以分成两部分就分成两部分
            sb2 = new StringBuilder(s2[1]);
        }
        sb1.reverse();
        switch (index) {
            case 0:
                System.out.println(Long.parseLong(String.valueOf(sb1)));
                break;
            case 1:
                long l=Long.parseLong(String.valueOf(sb2));//转换成长整型
                StringBuilder sb3 = new StringBuilder(String.valueOf(l));//转换成字符串
                System.out.println(Long.parseLong(String.valueOf(sb1))+"."+sb3.reverse());
                break;
            case 2:
                System.out.println(Long.parseLong(String.valueOf(sb1))+"/"+Long.parseLong(String.valueOf(sb2.reverse())));
                break;
            case 3:
                System.out.println(Long.parseLong(String.valueOf(sb1))+"%");
                break;
        }
    }
}

P1603 斯诺登的密码

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("one",       "01");
        map.put("a",         "01");
        map.put("two",       "04");
        map.put("three",     "09");
        map.put("four",      "16");
        map.put("five",      "25");
        map.put("six",       "36");
        map.put("seven",     "49");
        map.put("eight",     "64");
        map.put("nine",      "81");
        map.put("eleven",    "21");
        map.put("twelve",    "44");
        map.put("thirteen",  "69");
        map.put("fourteen",  "96");
        map.put("fifteen",   "25");
        map.put("sixteen",   "56");
        map.put("seventeen", "89");
        map.put("eighteen",  "24");
        map.put("nineteen",  "61");
        List<String> list = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);
        String[] words = scanner.nextLine().trim().split("\\s+");
        for (String s : words) {
            if (map.containsKey(s)) {
                list.add(map.get(s));
            }
        }
        if (list.isEmpty()) {
            System.out.println(0);
        }
        StringBuilder str = new StringBuilder();
        //对从哈希表中的数字字符串进行排序
        list.sort(Comparator.naturalOrder());
        //拼接字符串
        for (String s : list) {
            str.append(s);
        }
        String result = str.toString();
        //字符串不能以0为开头
        if (result.startsWith("0")) {
            result = result.substring(1);
        }
        System.out.println(result);
    }
}

P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here


import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str1=sc.next();
        String str2=sc.next();
        int count1=change(str1);
        int count2=change(str2);
        if(count1%47==count2%47){
            System.out.println("GO");
        }else{
            System.out.println("STAY");
        }
    }
    private static int change(String name){
        int value=1;
        for(char ch:name.toCharArray()){
            value*=((int)ch-64);
        }
        return value;
    }
}

P1597 语句解析

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str=sc.nextLine();
        int a=0,b=0,c=0;
        char[] arr=str.toCharArray();
        for(int i=0;i<arr.length;i+=5)
        {
            if(arr[i]=='a'){
                if(arr[i+3]=='a'){
                    a=a;
                }else if(arr[i+3]=='b'){
                    a=b;
                }else if(arr[i+3]=='c'){
                    a=c;
                }else{
                    a=arr[i+3]-'0';
                }
            }
            if(arr[i]=='b'){
                if(arr[i+3]=='a'){
                    b=a;
                }else if(arr[i+3]=='b'){
                    b=b;
                }else if(arr[i+3]=='c'){
                    b=c;
                }else{
                    b=arr[i+3]-'0';
                }
            }
            if(arr[i]=='c'){
                if(arr[i+3]=='a'){
                    c=a;
                }else if(arr[i+3]=='b'){
                    c=b;
                }else if(arr[i+3]=='c'){
                    c=c;
                }else{
                    c=arr[i+3]-'0';
                }
            }

        }
        System.out.println(a+" "+b+" "+c);
    }
}

P1598 垂直柱状图


import java.util.Scanner;
/*
整数反转 升级版
 */
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int s[]=new int[26];  //记录26个字母的个数
        String str;  //储存当前一行的字符串

        //一共有4行数据
        for(int i=0;i<=3;i++) {
            str=in.nextLine();  //输入一行字符串
            for(int j=0;j<str.length();j++) {
                if(str.charAt(j)>='A'  && str.charAt(j)<='Z') {
                    s[str.charAt(j)-'A']++;  //记录A-Z的字符的个数
                }
            }
        }

        //找出出现字母的最大值
        int max=0;
        for(int i=0;i<=25;i++) {
            if(s[i]>max) {
                max=s[i];
            }
        }

        //处理输出的字符串
        for(int i=max;i>=1;i--) {  //一共有max行
            for(int j=0;j<26;j++) {  //一共26个字母
                if(s[j]==i){
                    s[j]--;
                    System.out.print("* ");
                }else{
                    System.out.print("  ");
                }
            }
            System.out.println();  //换行
        }
        System.out.print("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z");
    }
}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一吨土豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值