首页 > 编程语言 >程序员面试金典---2

程序员面试金典---2

时间:2023-04-09 22:46:11浏览次数:35  
标签:字符 return 金典 self flag --- 程序员 second first

回文排列

思路:回文排列的特征之一就是如果字符串中每个字符的个数都是两个,或者只有只有一个字符个数为奇数个。只有上述两种结果。

class Solution:
    def canPermutePalindrome(self, s: str) -> bool:
        // 将字符串转成个数字典
        s_dic = Counter(s)
        // 标识几个字符出现为奇数个的字符,0表示没有,1出现一次
        flag = 0
        // 循环
        for i in s_dic:
            // 如果出现了奇数个的字符
            if s_dic[i] % 2 != 0:
                // 置一
                flag += 1
        // 如果大于一个
        if flag > 1:
            return False
        return True

一次编辑

思路:

假设firstsecond的长度分别是mn

如果firstsecond只需要一次编辑,只有三种情况:

  1. first插入一个字符,此时n-m=1secondfirst多一个字符,其余字符都相同
  2. first中删除一个字符得到second,此时m-n=1firstsecond多一个字符,其余字符都相同。
  3. first中的一个字符替换成不同的字符得到second,此时m=nfirstsecond恰好有一个字符不同。
class Solution:
    def oneEditAway(self, first: str, second: str) -> bool:
        m, n = len(first),len(second)
        if m < n:
            return self.oneEditAway(second, first)
        
        if m - n > 1:
            return False

        for i, (x, y) in enumerate(zip(first, second)):
            if x != y:
                return first[i + 1:] == second[i + 1:] if m == n else first[i + 1:] == second[i:]
        return True

标签:字符,return,金典,self,flag,---,程序员,second,first
From: https://www.cnblogs.com/dgqp/p/17301333.html

相关文章

  • flask----day05( )
    ......昨日回顾#1导出项目依赖pipreqs#2函数和方法的区别#3local对象 -并发编程中的一个对象,它可以保证多线程并发访问数据安全-本质原理是:不同的线程,操作的是自己的数据-不支持协程#4自己定义local,支持线程和协程 #注意点一:try:......
  • vue-day2
    绑定class样式:class=""(v-bind的缩写)修改vue维护的数据,而非直接操作dom绑定style,内联样式,交给vue管理(要对象,或者数组)font-size -> fontSize  换位驼峰  ⭐⭐⭐vue条件渲染v-show底层->调整style行内样式,display:nonev-ifdom节点都没了,彻底......
  • Collection - LinkedList源码解析
    简介:LinkedList集合底层是一个双向链表结构,具有增删快,查询慢的特点,内部包含大量操作首尾元素的方法。适用于集合元素先入先出和先入后出的场景,在队列源码中被频繁使用。链表结构的节点新增、删除都非常简单,仅仅把前后节点的指向修改下就好了,所以LinkedList新增和删除速度很......
  • D - Count Subtractions
    D-CountSubtractionshttps://atcoder.jp/contests/abc297/tasks/abc297_d 思路按照题目给的逻辑会超时。需要使用除法来优化算法。Code#include<iomanip>#include<bits/stdc++.h>#include<iostream>usingnamespacestd;#include<limits.h>#include<ma......
  • 后端开发Go语言-Gin框架
    随心记录,内容仅供参考!2023/04/09  gin框架介绍及安装2023/04/09  gin框架路由router......
  • E - Kth Takoyaki Set
    E-KthTakoyakiSethttps://atcoder.jp/contests/abc297/tasks/abc297_e 思路使用优先队列,从0开始,对所有可能的扩展,计算累加和,添加到队列,每次从队列取出最小值,直到取出第k个。Code#include<iomanip>#include<bits/stdc++.h>#include<iostream>usingnamespace......
  • 54、K8S-监控机制-Prometheus-node_exporter部署
    Kubernetes学习目录1、node_exporter部署1.1、安装主机说明这里分别安装到node1和node2节点上。1.2、软件安装1.2.1、解压软件mkdir/data/{softs,server}-ptarxvfnode_exporter-1.5.0.linux-amd64.tar.gz-C/data/server/1.2.2、程序位置重新调整ln-s/data/s......
  • Mybatis-plus字段自动填充功能介绍
    新建实体公共字段类@DatapublicclassBaseEntity{/***创建时间*/@TableField(fill=FieldFill.INSERT)privateLocalDateTimecreateTime;/***更新时间*/@TableField(fill=FieldFill.INSERT)privateLocalDateTim......
  • JAVA实体类-自定义Getter Setter
    ###案例一整个购物车存放的商品信息需要计算的属性需要重写get方法,保证每次获取属性都会进行计算privateBigDecimaltotalPrice;/***计算当前购物项总价*@return*/publicBigDecimalgetTotalPrice(){//等于单价*数量returnthis.price.multiply(......
  • 百度高德地图JS-API学习手记:地图基本设置与省市区数据加载
    无论是百度还是高德地图开发,还是高德地图开发。官方的给的案例启示很多,copy再修改下,就完成了https://lbs.amap.com/api/javascript-api/summary  http://lbsyun.baidu.com/index.php?title=jspopular3.0这个大致看一下,我想。有点GIS基础都能完成地图开发。个人认为百度的文档......