#每日一题2018/3/30

Leetcode 30

看到一个无比无比聪明的做法,太佩服了。

思路:将words数组中每一个字符串编码为一个特定数字,使整个words数组加起来的和唯一。

使用unordered_map存储,那么为了和是唯一的,就使用左移,使每一个都为2的指数(1,2,4,8)

遍历被检测的字符串,将每一个能对应上words数组中某个字符串的位置,初始化为该字符串对应的数字

再次遍历被检测字符串,使用二层循环,遍历字符串中所有长度为words字符串字符长度的子串,只要子串满足数字之和等于words数组之和,即满足要求。

太巧妙了!善用左移的属性

class Solution {
public:
    vector findSubstring(string s, vector& words) {
        int slength=words[0].size();
		int blength=words.size();
		unordered_map mapping;
		for(int i=0;i list;
		vector result;
		for(int i=0;i


leetcode 31

觉得数据有漏洞?

class Solution {
public:
    void nextPermutation(vector& nums) {
        int size=nums.size();
        int end=size-1;
        while(end>0)
        {
        	if(nums[end-1]end;i--)
			{
				if(nums[i]<=min&&nums[i]>nums[end-1])
				{
                	min=nums[i];
                	index=i;
            	}
			}
			swap(nums[index],nums[end-1]);
            sort(nums.begin()+end,nums.end());
		}
    }
};

leetcode32

对我来说难在正确理解题意……

你可能感兴趣的:(每日一题)