python 字符串 (基础三)

题目来源:力扣

1. 字符串

字符串反转

输入:["h","e","l","l","o"]  输出:["o","l","l","e","h"]
def reverser_str(s):
    s.reverse()
    return s

def reverser_str(st):
    s[:] = st[::-1]
    return s

# 双指针
def reverser_str(s):
    start = 0
    end = len(s) -1
    while start < end:
        s[start], s[end] = s[end], s[start]
        start += 1
    end -= 1
    return s

2. 整数的反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−2**31,  2**31 − 1] ,就返回 0

输入:x = 123  输出:321
输入:x = -123  输出:-321
def reverse_int(s):
    res = ''
    # 转换成str
    st = str(s)
    for i in range(len(st)-1, -1, -1):
        if st[i] != '-':
            res += st[i]
        else:
            res = "-" + res
    if -2**31 <= int(res) <= 2**31 - 1:
        return int(res)
    return 0

def reverse_int(x):
    s = str(x)  
    if s[0] == '-':
        s_rev = s[0] + s[-1:-len(s):-1]  
    else:
        s_rev = s[::-1]  
    x_rev = int(s_rev)  
    if -2**31 <= x_rev <= 2**31 - 1:
        return x_rev
    return 0

3. 字符串中的第一个唯一字符

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1

输入:s = "aabbl"    输出:4

def firstUniqChar(s):
    from collections import Counter
    res = Counter(s)
    m =[s.index(k) for k, v in res.items() if v ==1]
    if m:
        return min(m)
    return -1

def firstUniqChar(s):
    dic = {}
    for x in s:
        if x not in dic:
            dic.update({x:s.count(x)})
    for y in dic.keys():
        if dic[y] == 1:
            return s.index(y)
    return -1



"""
Python rfind() 返回字符串第一次出现的位置(从右向左查询),如果没有匹配项则返回-1。
Python find() 返回字符串第一次出现的位置(从左向右查询),如果没有匹配项则返回-1。
str.rfind(str, beg=0 end=len(string))
str.find(str, beg=0 end=len(string))
这里str是查找的字符串,beg=begin,是开始查找的位置,而end是结束位置,一般是字符串的长度
"""

def firstUniqChar(s):
    for i in s:
        if s.find(i) == s.rfind(i):
            return s.find(i)
    return s

firstUniqChar(s)

4. 异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词

若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词

输入:s = "anagram"  t = "nagram"    输出:False

输入:s = "anagram"  t = "anagram"    输出:True

def isAnagram(s1, s2):
    return Counter(s1)==Counter(s2)

def isAnagram(s1, s2):
    return sorted(s1)==sorted(s2)

def isAnagram(s, t):
    s_c, t_c = {}, {}
    for k in s:
        if k not in s_c.keys():
            s_c[k] = 1
        else:
            s_c[k] += 1
    for kk in t:
        if kk not in t_c.keys():
            t_c[kk] = 1
        else:
            t_c[kk] += 1
    return s_c==t_c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值