• 1029 旧键盘 (20 分)C、Java、python


    题目描述

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出
    肯定坏掉的那些键。

    输入描述:

    输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、
    以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。

    输出描述:

    按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。

    输入例子:

    7_This_is_a_test
    _hs_s_a_es
    

    输出例子:

    7TI
    

    思路

    键盘上一个键坏了那么它的大小写都读不出来,所以只需要全转换为大写,再用contains方法找出字符就行了。

    C的

    #include <stdio.h>
    #include <string.h>
    int main() {
        char ru[81];
        char chu[81];
        int rint[128] = {0};
        gets(ru);//gets()函数从流中读取字符串,直到出现换行符或读到文件尾为止
        gets(chu);
        for (int i = 0; i < strlen(ru); i++) {
            int has = 0;
            for (int j = 0; j < strlen(chu); j++) {//strlen()只是统计字符串的长度,统计到''结束,但不包括''
                if (chu[j] == ru[i]) {
                    has = 1;
                    break;
                }
            }
    //        判断是否包含某字符
            if (!has) {
                if (ru[i] >= 'a' && ru[i] <= 'z') {
                    ru[i] = ru[i] + 'A' - 'a';
                }
    //            如果没打印过,则打印,并标记为已打印
                if (!rint[ru[i]]) {
                    putchar(ru[i]);//putchar()输出指定字符,不会在输出后自动换行
                    rint[ru[i]] = 1;
                }
            }
        }
        return 0;
    }
    

    python

    while True:
        try:
            originalString = input().upper()    #把输入变为大写
            actualString = input().upper()
            result = []
            for i in originalString:    
                if actualString.find(i) == -1: #如果在第二个字符串没查找到
                    if i not in result:      #如果结果集里已经有了则不添加,以免破坏顺序
                        result.append(i)
            print("".join(result))
        except Exception:
            break
    

    Java

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner in=new Scanner(System.in);
            String[] a=in.nextLine().toUpperCase().split("");//先将输入的字符串转换为大写,并用字符数组存储到a字符串数组中。
            String b=in.nextLine().toUpperCase();//读入残缺键盘的输入的字符串并存储到b
            String c="";//存储最后输出的字符
            //然后用contains比较两行字符
            for(int i=0;i<a.length;i++){//遍历a字符数组,a.length是求数组的长度.length是数组的成员变量!
                if(!b.contains(a[i])){//判断按键损坏,即如果判断b字符串中不包含a[i]的字符,则进入判断
                    if(!c.contains(a[i])) {//判断重字符,即坏键只输出一次,如果c中不包含a[i]的字符,则进入判断
                        c =c+ a[i];//将不相重的字符存入c中
                    }
                }
            }
            System.out.println(c);//输出每个坏键
        }
    }
    

    java中nextLine()和next()的区别

    • 用Scanner实现字符串的输入有两种方法,一种是next(),一种nextLine()。
    • next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记
    • 完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的

    Java中的toUpperCase()

    • toUpperCase()方法将字符串小写字符转换为大写

    Java中的split()

    • split对字符串以给定的字符进行分隔,得到字符串数组
    • 逐个分隔字符串。split("");里面是空,不是空格。
    String str[] = str.split("");
    
    • 同时使用多个分隔符进行分隔。split(“[分隔符分隔符]”)。这里是同时用2和3进行分隔。
    String str[] = str.split("[23]");
    
    • 用多个空格分隔符进行分隔。split(" {1,}").。注意是空格加{1,}。就是说以1个空格或者1个以上空格分隔。如果是用两个或者以上空格split(“ {2,}”)。
    String str[] = "1 2   3   45  54";
    String str[] = str.split(" {1,}");
    

    java中contains方法

    • java中contains方法是判断是否存在包含关系,比如说a =[1,2,3,4], b=1那么a就包含b。
    • contains返回的是布尔类型true 和false,包含的话就返回true,不包含的话就返回false。
    public class pratise {
    
        public static void main(String[] args) {
            String a = "l love feng ye";
            String b = "love";
            boolean c = a.contains(b);
            System.out.println(a.contains(b));
            //assertEquals(a.contains(b), "true");
            assert(c)=true;//加断言
        }
    }//最后结果是true
    
    欢迎查阅
  • 相关阅读:
    OSGI企业应用开发(八)整合Spring和Mybatis框架(一)
    error C2998:不能是模板定义的错误解决
    <Android 应用 之路> 干货集中营 ~ GankIOClient
    OSGI企业应用开发(七)细说Blueprint & Gemini Blueprint(二)
    C语言初学者代码中的常见错误与瑕疵(15)
    C语言初学者代码中的常见错误与瑕疵(14)
    C语言初学者代码中的常见错误与瑕疵(13)
    《C语言入门很简单》欢乐槽点
    为什么在我眼里你是一只傻逼——傻逼“常所用”句型之(2)——“当当网的就有XXX人评论,YYY%的推荐”
    踢爆IT劣书出版黑幕——由清华大学出版社之《C语言入门很简单》想到的(3)
  • 原文地址:https://www.cnblogs.com/gh110/p/12158229.html
Copyright © 2020-2023  润新知