1:两数相加
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution
{
public:
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2)
{
int digit = 0;
int carryDigit = 0;
ListNode *res = new ListNode(0);
ListNode *tmpRes = res;
//carryDigit为进位数
while (l1 || l2 || carryDigit)
{
int tmpSum = 0;
if (l1)
{
tmpSum += l1->val;
l1 = l1->next;
}
if (l2)
{
tmpSum += l2->val;
l2 = l2->next;
}
tmpSum += carryDigit;
digit = tmpSum % 10;
carryDigit = tmpSum / 10;//每当进位后对10取模
ListNode *newLocation = new ListNode(digit);//创建新的链表表头将每个链表存到表头当中去
tmpRes->next = newLocation;
tmpRes = tmpRes->next;
}
tmpRes = res->next;
delete res;
return tmpRes;
}
};
运行结果:
2:无重复字符串的最长字串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
class Solution {
public:int hashmap[130];
int lengthOfLongestSubstring(string s) {
int max=0;
int n = s.size();
for(int i=0,j=0;j<n;j++){//当前判断是否重复的串为s[i..j]
hashmap[s[j]]++;
while(hashmap[s[j]]>1){
hashmap[s[i++]]--; //i指针右移
}
if(j-i+1>max)
max = j-i+1;
}
return max;
}
};
运行结果
采用哈希表的方式对字符进行存储和查找,有效地提高了存储和查找的速度