栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

[学习笔记-C++篇]day12 lintcode50

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[学习笔记-C++篇]day12 lintcode50

50+100+针对训练。
感谢大佬几款优秀的支持C、C++在线编译器

此外,教程网站:九章算法课-免费试听可以闲的时候过渡一下,换换思路听着。

另,十大排序算法需要整理一下,参考:1.0 十大经典排序算法


stage2——7天进阶阶段

在线编译器:compile c++ gcc online
刷题网站:阶段1第一关:基本数据类型

day2 planA
lintcode 余3-4
教程完成度60%。


Q&A

1.翻转字符串2.数组剔除元素后的乘积3.主元素4.Fizz Buzz问题5.转换字符串到整数(容易版)6.大小写转换27.字符串查找8.转换成小写字母9.两字符串和

1.翻转字符串

复盘一下。对string的应用掌握不充分,需要整理string用法。

2.数组剔除元素后的乘积

思路在其中。

简单归纳一下:
1)学会用迭代器,vector::iterator it;,迭代器赋初值一定要用it=obj.begin(),不能用it=&obj[i];,因为数据类型不一致
2)结合obj.erase(it);,即删除it迭代器指向的元素,此时it指针是不会改变的,只是obj中的元素被剔除掉1个,即元素前移,it指向的是删除掉的元素的后一个元素
3)插入指令obj.insert(it,1);在it的位置处插入元素1
4)注意数据类型,比如这里的输出类型和累乘整型变量都应该是long long

class Solution {
public:
    
    vector productExcludeItself(vector &nums) {
        // write your code here

        //初步思路,先剔除第i个,然后累乘,然后插入
        vector::iterator it;//保存剔除元素
        it=nums.begin();//只能用这种取vector的地址函数去赋值,不然类型不对

        vector p;
        long long m;//累乘
        int tmp;//临时存放

        if(nums.size()==1) p.push_back(1);
        else
        {
            for(int i=0;i 
3.主元素 

简单思路整理:先判断是不是一个元素,是直接返回;不是就先排序,然后累积某一元素数目,一旦大于阈值就返回,否则判断到第i个元素不是该元素,不是就重新累积。

class Solution {
public:
    
    int majorityNumber(vector &nums) {
        // write your code here
        
        //思路:先排序,然后统计每种类型数据数目,一旦找到就返回
        if(nums.size()==1) return nums[0];
        
        int j=nums.size()/2;//判断变量

        sort(nums.begin(),nums.end());
        int tmp;//存储元素
        int n=0;//存储元素数目
        int i=0;//遍历索引
    
        while(n<=j)
        {
            tmp=nums[i];
            n=count(nums.begin(),nums.end(),tmp);
            while(nums[++i]==tmp){}
        }
        return tmp;
    }
};
4.Fizz Buzz问题

要点在于数字和字符串之间的转换:

字符串转数字stoi(),eg. int i; string str; x=stoi(str);,头文件string,数据类型不限;
数字转字符串to_string(),eg. str=to_string(x);,但是尽量不要用浮点数,因为会保留小数6位;
字符串数字互转的stringstream,eg. int x; string str; stringstream ss; x >> ss; ss >> str;,或者str >> ss; ss >> x;,数据类型不限。

class Solution {
public:
    
    vector fizzBuzz(int n) {
        // write your code here
        
        vector s;

        for(int i=1;i<=n;i++)
        {
            if(i%3==0 && i%5==0) s.push_back("fizz buzz");
            else if(i%3!=0 && i%5!=0) s.push_back(to_string(i));
            else if(i%3!=0) s.push_back("buzz");
            else s.push_back("fizz");
        }
         return s;
    }
};
5.转换字符串到整数(容易版)

和上面一样。

class Solution {
public:
    
    int stringToInteger(string &target) {
        // write your code here
        return stoi(target);
    }
};
6.大小写转换2

参考[学习笔记-C++篇]day4 plus(刷题篇)。

仍旧考察字符判断函数。

class Solution {
public:
    
    string lowercaseToUppercase2(string &letters) {
        // write your code here

        //遍历字符串元素判断
        string lu;

        for(int i=0;i 
7.字符串查找 

主要考察string的find查找函数。参见[学习笔记-C++篇]day9 STL教程整理。

class Solution {
public:
    
    int strStr(string &source, string &target) {
        // Write your code here

        int pt;

        pt=source.find(target);
        if(pt==-1)    return -1;
        else return pt;

    }
};
8.转换成小写字母

和前面第6题考查的内容一样。

class Solution {
public:
    
    string toLowerCase(string &str) {
        // Write your code here
        string t;

        for(int i=0;i 
9.两字符串和 

考查字符和数字转换:

不能用字符串和数字转换的方法。

字符转数字:char c; int i=c-'0';,注意,减去的是字符'0',不是数字。
数字转字符:int i; char c=i+'0';,注意,加上的还是字符'0',不是数字。

class Solution {
public:
    
    string SumofTwoStrings(string &A, string &B) {
        // write your code here

#if 1 //第1种
        
        int size=A.size()>B.size()?A.size():B.size();
        int sum;//每一位和
        string S;//保存结果

        int a=stoi(A),b=stoi(B);

        for(int i=0;i 

这种方法会遇到超出范围的情况,主要是stoi函数用法问题。
当字符串中有除了数字外的字符时,只会将这些字符前的数字转换为int。
此外还有atoi函数,stoi的参数是const string*,atoi的参数是const char*。
但stoi有检测范围的。

剩下的明天整理。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768860.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号