牛客华为机试题解(python版更新中)

目录

一、字符串(知识点)

HJ1 字符串最后一个单词的长度(简单)

HJ2 计算某字符出现次数(简单)

HJ4 字符串分隔(简单)

HJ5 进制转换(简单)

HJ10 字符个数统计(简单)

HJ11 数字颠倒(简单)

HJ12 字符串反转(简单)

HJ14 字符串排序(简单)

HJ17 坐标移动(中等)

HJ18 识别有效的IP地址和掩码并进行分类统计(较难)


自己研究的题解,也有借鉴评论区牛人思路,答案不唯一,仅供学习参考,也欢迎大家指出问题,共同学习

一、字符串(知识点)

HJ1 字符串最后一个单词的长度(简单)

描述

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)

输入描述:

输入一行,代表要计算的字符串,非空,长度小于5000。

输出描述:

输出一个整数,表示输入字符串最后一个单词的长度。

示例1

输入:hello nowcoder

输出:8

说明:最后一个单词为nowcoder,长度为8

import sys

a = input().split()
print(len(a[-1]))

分析:利用split将字符串按空格拆分成一个列表,再利用len和[-1]取最后一个字符串的长度。

HJ2 计算某字符出现次数(简单)

描述

写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)

数据范围:1≤n≤1000 

输入描述:

第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为格)。

输出描述:

输出输入字符串中含有该字符的个数。(不区分大小写字母)

示例1

输入:ABCabc

           A

输出:2

import sys

st1 = input().lower()
st2 = input().lower()
print(st1.count(st2))

分析:将两次输入都小写化(lower),以至于不用区分大小写,再利用st1.count(st2),意为st2在st1中的个数。

HJ4 字符串分隔(简单)

描述

输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;

长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:

连续输入字符串(每个字符串长度小于等于100)

输出描述:

依次输出所有分割后的长度为8的新字符串

示例1

输入:abc

输出:abc00000

import sys

#   :0<8s  格式左对齐 右补0 输出8个字符串
while True:
    try:
        l = input()
        for i in range(0, len(l), 8):  #间隔8
            print("{:0<8s}".format(l[i:i+8]))
    except:
        break

分析:主要利用一个循环,遍历每8个字符的开头,为了输出0-8,8-16……,补0利用初始化函数format,:0<8s意为左对齐 右补0, 输出8个字符。(利用while和try的意图在于可以循环输入,直到输入一个非十六进制数,退出并且不会报错)

HJ5 进制转换(简单)

描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围:保证结果在 1≤n≤2**31−1 

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例1

输入:0xAA

输出:170

import sys

while True:
    try:
        a = input()
        print(int(a,16))
    except:
        break

分析:利用int()将其他进制转换为十进制--->int(a,16)十六进制转换为十进制,int(a,8)八进制转换为十进制,int(a,2)二进制转换为十进制。bin(a)将其他进制转换为二进制。

HJ10 字符个数统计(简单)

描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次

例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。

<

你可能感兴趣的:(牛客华为机试题解(python版更新中))