牛客网学习笔记(HJ8合并表记录、HJ11数字颠倒)

202 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

题目来自牛客网的华为机试题库,题目为简单题-HJ8 合并表记录和HJ11 数字颠倒

HJ8 合并表记录

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

提示:
0 <= index <= 11111111
1 <= value <= 100000

输入描述:
先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开

输出描述:
输出合并后的键值对(多行)

示例1
输入:

			4
			0 1
			0 2
			1 2
			3 4

输出:

			0 3
			1 2
			3 4
字典排序在python里用sorted(dic)
n = int(input())
dic = {}
for i in range(n):
    index, val = map(int,input().split())
    if index not in dic:
        dic[index] = val
    else:
        dic[index] += val

for i in sorted(dic):
    print(i,dic[i])
解析

由于做题少,也很少用python所以一直对内置函数们不是很了解。用掘金查了一下才知道对字典进行排序也有可以直接用的函数。前面用for循环实现对同一个index对应val的相加,然后直接sorted排序就可以了,使用工具就是会很简单呀。

HJ11 数字颠倒

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

输入描述: 输入一个int整数 输出描述: 将这个整数以字符串的形式逆序输出

示例1 输入:1516000 输出:0006151

n = int(input())
s = ''
if n == 0:
    print(0)
while n > 0:
    k = n % 10
    s += "%d"%k
    n = n // 10
print(s)
解析

之前一直想的是for循环倒过来,都不知道可以s += "%d"%k,还是那句话啊,多练多见才能有进步啊