技术笔试刷题笔记-2

1. 合并表记录

  • 题目描述
    数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

  • 代码:

import sys


while True:
    try:
        n = int(sys.stdin.readline())#input的方式太重要
        dic = dict()
        for i in range(n):
            string = str(sys.stdin.readline())#input的方式太重要
            key, value = string.split(" ")
            key = int(key)
            value = int(value)
            if key in dic:
                dic[key] += value
            else:
                dic[key] = value
        ls = list(dic.keys())
        ls.sort()
        for key in ls:
            print("{} {}".format(key, dic[key]))
    except:
        break

2. 提取不重复的整数

  • 题目描述
    输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

  • 代码:

import sys
while True:
    try:
        num = list( str(input() ))
        num.reverse()
        set_num = set(num)
        ls = []
        for n in num:
            if n in set_num:
                ls.append(n)
                set_num.remove(n)
            else:
                continue
        output = "".join(ls)
        print(output)


    except:
        break

3. 字符个数统计

  • 题目描述
    编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
    输入
    abaca
    输出
    3

  • 代码:

print(len(set(list(str(input())))))

4. 数字颠倒

  • 题目描述
    输入一个整数,将这个整数以字符串的形式逆序输出
    程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

  • 代码:

while True:
    try:
        num = int(input())
        """
        num = list(str(num))
        num.reverse()
        print("".join(num))
        
        """
        print(str(num)[::-1])
        pass
    except:
        break

4. 字符串反转

  • 题目描述
    写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)

  • 代码:

while True:
    try:
        string = str(input())
        if len(string) > 1000:
            continue
        else:
            print(string[::-1])
            
        pass
    except:
        break
        

5. 句子逆序

  • 题目描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符


接口说明

/**
 * 反转句子
 * 
 * @param sentence 原句子
 * @return 反转后的句子
 */
public String reverse(String sentence);
  • 代码:
import sys

while True:
    try:
        sentence = str(input())
        ls = sentence.split(" ")
        ls.reverse()
        print(" ".join(ls))

    except:
        break

6. 字串的连接最长路径查找

  • 题目描述
    给定n个字符串,请对n个字符串按照字典序排列。

  • 代码:

while True:
    try:
        n = int(input())
        ls = []
        for i in range(n):
            string = str(input())
            ls.append(string)
        ls.sort()
        [print(value) for value in ls]
            
        pass
    except:
        break

7. 求int型正整数在内存中存储时1的个数

  • 题目描述
    输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
  • 代码:
while True:
    try:
        num = int(input())
        print(bin(num)[2:].count("1"))
        pass
    except:
        break

8. (练习用)挑7

  • 题目描述
    输出7有关数字的个数,包括7的倍数,还有包含7的数字(如17,27,37…70,71,72,73…)的个数(一组测试用例里可能有多组数据,请注意处理)

  • 代码:

while True:
    try:
        num = int(input())
        if 0<num<7:
            print(0)
        elif num>30000:
            break
        elif 7 <= num <=30000:
            ls = list(range(7, num+1, 7))
            ls2 = [i if "7" in str(i) else 0 for i in range(num+1)]
            ls.extend(ls2)
            ls = set(ls)
            ls.remove(0)
            print(len(set(ls)))

    except:
        break

9. 坐标移动

  • 题目描述
开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。

输入:

合法坐标为A(或者D或者W或者S) + 数字(两位以内)

坐标之间以;分隔。

非法坐标点需要进行丢弃。如AA10;  A1A;  $%$;  YAD; 等。

下面是一个简单的例子 如:

A10;S20;W10;D30;X;A1A;B10A11;;A10;

处理过程:

起点(0,0)

+   A10   =  (-10,0)

+   S20   =  (-10,-20)

+   W10  =  (-10,-10)

+   D30  =  (20,-10)

+   x    =  无效

+   A1A   =  无效

+   B10A11   =  无效

+  一个空 不影响

+   A10  =  (10,-10)

结果 (10, -10)

注意请处理多组输入输出
  • 代码:
pos = [0, 0]
def process(order):
    if len(order) <= 1:
        pass
    elif len(order) > 1:
        try:
            if order[0] == "A":
                pos[0] -= int(order[1:])
            elif order[0] == "D":
                pos[0] += int(order[1:])
            elif order[0] == "S":
                pos[1] -= int(order[1:])
            elif order[0] == "W":
                pos[1] += int(order[1:])
            else:
                pass
        except:
            pass



while True:
    try:
        string = str(input())
        ls = string.split(";")
        ls = [s.strip(" ") for s in ls]
        
        pos = [0, 0]
        [process(order) for order in ls]
        print("{},{}".format(pos[0], pos[1]) )
    except:
        break

你可能感兴趣的:(leetdoce)