牛客网华为机试在线训练(一)

1.字符串最后一个单词长度:
计算输入字符串中最后一个单词的长度。

while True:
    try:
        s = input().strip().split(' ')
        print(len(s[-1]))
    except:
        break

2.计算字符个数:
统计一个字符串中某个字符的个数(不区分大小写)
c语言实现时要注意保存输入字符串的数组得设置的足够大!

s = input().strip().lower()
ch = input().strip().lower()
print(s.count(ch))

3.明明的随机数
对一组数据进行排序去重
sort方法和sorted函数的区别:

  1. sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
  2. list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
  3. sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)
n = int(input().strip())
l = []
for i in range(n):
    a = int(input().strip())
    if a not in l:
        l.append(a)
l.sort()
for number in l:
    print(number)

4.字符串分隔:
字符串切片操作,注意循环变量i的取值

s = input().strip()
n = len(s) // 8
if n == 0:
	print(s + '0' * (8-len(s)))
	break
for i in range(n):
	print(s[i*8:(i+1)*8])
if len(s) % 8 !=0:
	print(s[(i+1)*8:]+'0' * (8*(n+1)-len(s)))

5.进制转换
将十六进制字符串转换成十进制
C语言中switch、case语句中,case语句的取值为整型或任何能转换成整型的数据类型(如字符型!)。
ASCII码值:‘0’:48, ‘A’:65, ‘a’:97。

s = input().strip()
#print(int(s,16))  #直接使用int()函数,改变base的值进行相应进制向十进制的转换
dic = {'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
summ = 0
for al in s[2:]:
   if al in '0123456789':
       summ = summ * 16 + ord(al)-ord('0')
   else:
       summ = summ * 16 + dic[al]
print(summ)

6.质数因子
任何一个数都可以分解成若干质数的乘积!一个质数的质因数只有它本身(1不是!)
注意输出格式!要求输出以空格隔开,最后一个数后面也要有空格,所以在print时可以加上end = ’ ’ ;或者可以把输出转化成字符串形式,便于输出空格。

while True:
    try:
        flag = False
        n = int(input().strip())
        tem = n // 2 + 1
        for i in range(2,tem):
            while n % i == 0:
                flag = True
                print(i,end = ' ')
                n = n // i
        if not flag:
            print(n,end = ' ')
    except:
        break

7.取近似值
对一个数进行四舍五入;
C语言方法 直接(int)(s+0.5) 进行判断即可。如果要考虑负浮点数的情况,就用s-0.5再取整即可。

while True:
    try:
        s = input().split('.')
        if s[1][0] in '56789':
            print(int(s[0])+ 1)
        else:
            print(int(s[0]))
    except:
        break

8.合并表记录:
字典操作dict.items() 将字典中的每队key-value值组成元组,并将所有的元组组成列表的形式返回。
dict.keys()、dict.values()分别以列表的形式返回字典中的键和值。

while True:
    try:
        n = int(input().strip())
        dic = {}
        for i in range(n):
            a,b = input().split(' ')
            if a not in dic:
                dic[a] = int(b)
            else:
                dic[a] += int(b)
        for k,v in sorted(dic.items(),key = lambda x:int(x[0])):
            print(k,v)
    except:
        break

9.提取不重复的整数
c语言实现基本思路:先定义一个数组a[10]={0}用来标记该数字是否出现在输入整数中,然后对输入整数进行取余模除操作。

while True:
    try:
        s = input().strip()
        l = ''
        for al in s[::-1]:
            if al not in l:
                l += al
        print(l)
    except:
        break

10.字符个数统计
统计字符串中含有不同字符ASCII码范围在0~127的个数。
C实现思路:此题跟9类似,也可以使用数组标记的思想,开一个大小为128的数组,对输入字符进行判断,是否ASCII值在0~127,在的话检查数组中该字符是否进行了标记,没标记的话计数+1,否则继续下一个字符。

n = input()
cunt = 0
l = ""
for i in n:
    if ord(i) in range(0,128) and i not in l:
        cunt = cunt + 1
        l = l + i
print(cunt)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值