zoukankan      html  css  js  c++  java
  • 《程序员面试金典》刷题(一)

    这些东西就是套路

    1.实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

    示例 1:

    输入: s = "leetcode"
    输出: false
    示例 2:

    输入: s = "abc"
    输出: true
    限制:

    0 <= len(s) <= 100
    如果你不使用额外的数据结构,会很加分

    总结套路:标准答案是位运算,这块不懂,仔细研究了下还挺意思。

    位预算:&和|两种,&就是两个数都是1,结果才的1。 |就是只要有一个是1,就是1。

    左移位预算: 15<<2 表示将15转化为二进制,然后左移两位,右侧末尾全部补0。

    典型应用场景:位运算主要是用来表示一组具有开关状态的事物,开关指的就是true/false,开或者关等。

    比如5个灯泡,00000

    第一个灯泡是d1,00001,2

    第二个是d2,00010,4

    一组灯泡的状态是一个变化的值,比如10110

    如果想知道第三个灯泡亮不亮,可以用00100跟他做&运算。


    memory应该是 00000000000000000000000000000

    其他两种思路是

    1.查找字符,返回的结果不是自己所在的位置,就是不重复。

    从第一个字符开始,查找一个字符 astr.lastIndexOf(),是此位置就不重复,否则就重复。

    for(i=0;i<astr.length();i++)

    astr.lastIndexOf(astr.charAt(i)  )!=i

    return false

    return true;

    2.利用set集合的不重复特性

  • 相关阅读:
    Python(八)进程、线程、协程篇
    Python(七)Socket编程、IO多路复用、SocketServer
    Python(六)面向对象、异常处理、反射、单例模式
    Python并发编程之多进程
    ORM框架SQLAlchemy
    Python并发编程之IO模型
    Python并发编程之同步异步and阻塞非阻塞
    二分查找
    插入排序
    单向链表
  • 原文地址:https://www.cnblogs.com/gen2122/p/14861653.html
Copyright © 2011-2022 走看看