Leetcode 8 Two Pointers
Two Pointers
1. 28. Implement strStr()
用 i 记录haystack偏移量,j 记录 needle 的偏移量。
 class Solution {
     public int strStr(String haystack, String needle) {
         int lenH = haystack.length();
         int lenN = needle.length();
         if( lenN > lenH)
             return -1;
         if(lenN == 0)
             return 0;
         for(int i = 0; i <= lenH - lenN; i++){
             boolean flag = true;
             for(int j = 0; j < lenN; j++){
                 if( haystack.charAt(i + j) != needle.charAt(j)){
                     flag = false;
                     break;
                 }
             }
             if (flag)
                 return i;
         }
         return -1;
     }
 }
2. 125. Valid Palindrome
只需要建立两个指针,head 和 tail, 分别从字符的开头和结尾处开始遍历整个字符串,如果遇到非字母数字的字符就跳过,继续往下找,直到找到下一个字母数字或者结束遍历,如果遇到大写字母,就将其转为小写。等左右指针都找到字母数字时,比较这两个字符,若相等,则继续比较下面两个分别找到的字母数字,若不相等,直接返回false.
Character.isLetterOrDigit ( char ). 判断是否为字符或数字
Character.toLowercase ( char ) . 两个函数
 class Solution {
     public boolean isPalindrome(String s) {
         if( s.isEmpty())
             return true;
         int head = 0, tail = s.length() -1;
         char cHead, cTail;
         while( head <= tail){
             cHead = s.charAt(head);
             cTail = s.charAt(tail);
             if(!Character.isLetterOrDigit(cHead))
                 head++;
             else if(!Character.isLetterOrDigit(cTail))
                 tail--;
             else{
                 if(Character.toLowerCase(cHead) != Character.toLowerCase(cTail))
                     return false;
             head++;
             tail--;
             }
         }
         return true;
     }
 }
3. 142. Linked List Cycle II Medium
用快慢指针,假设有环时,head到环起点距离为A,环起点到相遇地点为B,慢指针走A+B,快指针移动距离总是慢指针两倍,且比慢指针多走一圈设为N。A+B+N = 2A + 2B。
A = N - B。head到环起点(新设一个指针指向head) = 一圈 减去 环起点到相遇地点 = 相遇点到环起点距离。
 public class Solution {
     public ListNode detectCycle(ListNode head) {
         ListNode fast = head, slow = head;
         while(fast!=null && fast.next!=null){
             slow = slow.next;
             fast = fast.next.next;
             if( fast == slow){
                 slow = head;
                 while( slow != fast){
                     slow = slow.next;
                     fast = fast.next;
                 }
                 return fast;
             }
         }
         return null;
     }
 }
Leetcode 8 Two Pointers的更多相关文章
- LeetCode 4Sum (Two pointers)
		
题意 Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = ...
 - LeetCode 3Sum (Two pointers)
		
题意 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...
 - [LintCode]——目录
		
Yet Another Source Code for LintCode Current Status : 232AC / 289ALL in Language C++, Up to date (20 ...
 - Leetcode 笔记 117 - Populating Next Right Pointers in Each Node II
		
题目链接:Populating Next Right Pointers in Each Node II | LeetCode OJ Follow up for problem "Popula ...
 - Leetcode 笔记 116 - Populating Next Right Pointers in Each Node
		
题目链接:Populating Next Right Pointers in Each Node | LeetCode OJ Given a binary tree struct TreeLinkNo ...
 - [LeetCode] Populating Next Right Pointers in Each Node II 每个节点的右向指针之二
		
Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...
 - [LeetCode] Populating Next Right Pointers in Each Node 每个节点的右向指针
		
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
 - [LeetCode]题解(python):116 Populating Next Right Pointers in Each Node
		
题目来源 https://leetcode.com/problems/populating-next-right-pointers-in-each-node/ Given a binary tree ...
 - LeetCode:Populating Next Right Pointers in Each Node I II
		
LeetCode:Populating Next Right Pointers in Each Node Given a binary tree struct TreeLinkNode { TreeL ...
 
随机推荐
- 目录导航「深入浅出ASP.NET Core系列」
			
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 入门篇 引子 1.1专题介绍 1.2环境安装 1.3创建项目 1.4部署到IIS 1.5准备CentOS和Ngin ...
 - SLAM+语音机器人DIY系列:(三)感知与大脑——2.带自校准九轴数据融合IMU惯性传感器
			
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...
 - SpringMVC之Controller和参数绑定
			
在上一篇Spring+SpringMVC+Mybatis整合中说到了SSM的整合,并且在其中添加了一个简单的查询功能,目的只是将整个整合的流程进行一个梳理,下面在上一篇中工程的基础上再说一些关于Spr ...
 - 【转】JavaSE面试题目收集
			
1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用, ...
 - PHP信号管理
			
PHP信号管理 SIGHUP 终止进程 终端线路挂断 SIGINT 终止进程 中断进程 SIGQUIT 建立CORE文件终止进程,并且生成core文件 SIG ...
 - SAP MM 采购ERP顾问咨询费限制总金额的框架协议实现方案
			
SAP MM 采购ERP顾问咨询费限制总金额的框架协议实现方案 [业务场景] 采购部门与ERP咨询公司签订了一个框架协议,只规定不同级别顾问的人天费用,不限定这些不同级别咨询顾问的具体采购的人天数,但 ...
 - 用Python写一个贪吃蛇
			
最近在学Python,想做点什么来练练手,命令行的贪吃蛇一般是C的练手项目,但是一时之间找不到别的,就先做个贪吃蛇来练练简单的语法. 由于Python监听键盘很麻烦,没有C语言的kbhit(),所以这 ...
 - python正常时间和unix时间戳时间的相互转换源码
			
在学习过程,将内容过程比较常用的一些内容做个珍藏,下面的内容段是关于python正常时间和unix时间戳时间的相互转换的内容,应该是对各朋友有些帮助. import time def timestam ...
 - 获取用户IP
			
public static string GetIP() { string ip; if (System.Web.HttpContext.Cu ...
 - koa-ueditor上传图片到七牛
			
问题描述:服务器系统架构采用的是koa(并非koa2),客户端富文本编辑器采用的是百度的ueditor控件.现在需要ueditor支持将图片直接上传到七牛云. 前提:百度的ueditor需要在本地配置 ...