使用双指针,i遍历全部字符,start收集重复的次数,最后不重复出现的字符个数maxx为i-start+1;
1 // 2 3 // main.cpp 4 5 // Longest Substring 6 7 // 8 9 // Created by Bowie Hsu on 14/11/21. 10 11 // Copyright (c) 2014年 Bowie Hsu . All rights reserved. 12 13 // 14 15 16 17 #include <iostream> 18 19 #include <string> 20 21 #include <vector> 22 23 #include "stdio.h" 24 25 using namespace std; 26 27 28 29 struct ListNode { 30 31 int val; //用将x的值赋给int型 32 33 ListNode *next; 34 35 ListNode(int x) : val(x), next(NULL) {} 36 37 }; 38 39 40 41 class Solution { 42 43 public: 44 45 public: 46 47 ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) 48 49 { 50 51 int forw=0;//进位标志 52 53 //建立一个新的链表存储答案 54 55 ListNode root(0); 56 57 ListNode *output=&root; 58 59 while(l1||l2) 60 61 { 62 63 int v1 = (l1 ? l1->val : 0); 64 65 int v2 = (l2 ? l2->val : 0); 66 67 int sum=v1+v2+forw; 68 69 //检验sum是否为两位数 70 71 forw=sum/10; 72 73 sum=sum%10; 74 75 ListNode *coNode=new ListNode(sum); 76 77 output->next=coNode; 78 79 output=coNode; 80 81 if(l1)l1=l1->next; 82 83 if(l2)l2=l2->next; 84 85 } 86 87 if(forw>0) 88 89 { 90 91 ListNode *coNode=new ListNode(forw); 92 93 output->next=coNode; 94 95 output=coNode; 96 97 } 98 99 return root.next; 100 101 } 102 103 }; 104 105 106 107 int main() 108 109 { 110 111 Solution x; 112 113 ListNode newpoint(0); 114 115 ListNode *ans=&newpoint; 116 117 ListNode *newpoint1=new ListNode(6); 118 119 ListNode *newpoint2=new ListNode(7); 120 121 ans->next=x.addTwoNumbers(newpoint2,newpoint1); 122 123 cout<<ans->next->next->val<<endl; //程序成功,输出6+7=13中的十位数字1 124 125 }