字符串替换空格、旋转数组最小数字、从尾到头打印链表

  1. 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

具体思路:1.遍历字符串,看之后的总长度,2.从后往前遍历字符串,进行替代

class Solution {

public:

void replaceSpace(char *str,int length) {

        if(length<=0)

            return;

        int sum=0;

         for(int i=0;i<length;i++)

             {

             if(str[i]==' ')

                 sum++;

         }

        int new_length=length+sum*2;

        

        int num=length-1;

        for(int i=(new_length-1);i>=0,num>=0;i--,num--)

        {

            if(str[num]!=' ')

                str[i]=str[num];

            else{

                str[i]='0';

                i--;

                str[i]='2';

                i--;

                str[i]='%';

            }

        }

}

};

 

 

2.把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。

输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。

例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

思路:就相当于把一个排序好的数组,将后面选几个整体挪动到前面,如1,2,3,4,5,6变成了4,5,6,1,2,3,很容易就找到规律,当左边>右边,右边就是最小的数。

 

class Solution {

public:

    int minNumberInRotateArray(vector<int> rotateArray) {

        if(rotateArray.size() == 0)

            return 0;

        for(int i = 0 ; i < rotateArray.size() -1  ;i++)

        {

            if(rotateArray[i] > rotateArray[i + 1])

                return rotateArray[i + 1];

        }

        

    }

};

 

 

3.输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

思路:最简单的倒序输出链表数据方式就是顺序遍历,如何记录所有数据,然后倒着输出出来,但是链表长度未知,因此用Vector存储较好,顺序遍历,将每个数据存入到vector的第一个元素即可。

/**

*  struct ListNode {

*        int val;

*        struct ListNode *next;

*        ListNode(int x) :

*              val(x), next(NULL) {

*        }

*  };

*/

class Solution {

public:

    vector<int> printListFromTailToHead(ListNode* head) {

        vector<int> result;

        while(head)

        {

          result.insert(result.begin(),head->val);

          head = head->next;  

        }

        return result;

    }

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值