当前位置: 首页 > news >正文

东莞网站建设排名 南城廊坊seo排名公司

东莞网站建设排名 南城,廊坊seo排名公司,襄阳网站建设多少钱,软件服务网站设计费如何做分录①这道题可以直接申请一个临时数组,然后遍历字符串,是空格则加入20%,最后再把临时数组转化为字符串。 怎么把一个数组转化为字符串? 如数组arry[], string newstr new string(arry,0,arry.size()-1); return newstr; 而且临时数…


①这道题可以直接申请一个临时数组,然后遍历字符串,是空格则加入20%,最后再把临时数组转化为字符串。
怎么把一个数组转化为字符串?
如数组arry[],
string newstr = new string(arry,0,arry.size()-1);
return newstr;
而且临时数组的空间要申请大一些。
public String replaceSpace(String s) {
        int length = s.length();
        char[] array = new char[length * 3];
        int index = 0;
        for (int i = 0; i < length; i++) {
            char c = s.charAt(i);
            if (c == ' ') {
                array[index++] = '%';
                array[index++] = '2';
                array[index++] = '0';
            } else {
                array[index++] = c;
            }
        }
        String newStr = new String(array, 0, index);
        return newStr;
    }

②或者用栈,只是出栈后结果是需要来个翻转吗?有点不大会。


③不过上面的这些方法都需要时间复杂度O(n),并且空间复杂度O(n)。
接下来有个时间复杂度O(n),但是空间复杂度O(1)的做法,要是学会了也不难,接下来说说这种解法。
这个解法就不需要申请新的空间。
第一步,首先扩充数组到每个空格替换成"%20"之后的大小。
比如这道题,每个空格要变成20%,即一个空格变成了3个空格,所以每个空格处要添加2个空格,即先统计字符串中有多少个空格,然后+多少个空格*2。怎么添加字符串长度?
//s.resize(n); resize将string类中有效字符改变到n个。
第二步,从后向前替换空格,也就是双指针法,过程如下:
i指向新长度的末尾,j指向旧长度的末尾。
然后i,j往前,如果s[j]不是空格则把s[j]赋给s[i]; 如果s[j]是空格,则s[i]赋为0, s[i-1]赋为2, s[i-2]赋为%,并且i往前移三格。然后继续i,j一起往前移继续如此轮下去。


④有同学问了,为什么要从后向前填充,从前向后填充不行么?
从前向后填充就是O(n^2)的算法了,因为每次添加元素都要将添加元素之后的所有元素向后移动。

⑤其实很多数组填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。
这么做有两个好处:
不用申请新数组。
从后向前填充元素,避免了从前向后填充元素时,每次添加元素都要将添加元素之后的所有元素向后移动的问题。


当i=j时,即说明扩充的空格都用完了,说明前面已经没有空格要变成20%了,所以就可以结束了,所以循环结束条件就是j<i,而不是j<=i。
 

class Solution {
public:
    string replaceSpace(string s) {
        int count = 0; // 统计空格的个数
        int sOldSize = s.size();
        for (int i = 0; i < s.size(); i++) {
            if (s[i] == ' ') {
                count++;
            }
        }
        // 扩充字符串s的大小,也就是每个空格替换成"%20"之后的大小
        s.resize(s.size() + count * 2);
        int sNewSize = s.size();
        // 从后先前将空格替换为"%20"
        for (int i = sNewSize - 1, j = sOldSize - 1; j < i; i--, j--) {
            if (s[j] != ' ') {
                s[i] = s[j];
            } else {
                s[i] = '0';
                s[i - 1] = '2';
                s[i - 2] = '%';
                i -= 2;
            }
        }
        return s;
    }
};
 


 

http://www.ritt.cn/news/7855.html

相关文章:

  • 江夏区做网站指数函数求导公式
  • 菏泽网站建设哪家好百度竞价渠道代理商
  • 市通建设工程质量监督局网站搜狗权重查询
  • lnmp wordpress 换域名来宾网站seo
  • 徐州网站优化价格怎样在百度上发布信息
  • 个人网站备案注意事项谷歌推广怎么做
  • 云服务器做淘客网站保定百度推广联系电话
  • wordpress网站打开很慢搜索网页内容
  • 有没有大人和小孩做的网站搜索引擎优化时营销关键词
  • dede网站首页被劫持优秀软文案例
  • 营销形网站风云榜小说排行榜
  • 东莞网页制作最新招聘信息山东网站seo
  • 网页美工设计需求说明北京网站优化
  • 建设企业网站开发公司每日新闻播报
  • 黄埔网站建设 信科网络百度广告商
  • 网站结构流程图怎么做爱站网长尾关键词挖掘工具下载
  • 织梦移动端网站怎么做html网页制作
  • 权重2的网站谷歌app官方下载
  • 做网站的程序公司seo是指什么意思
  • wordpress小说目录搜索引擎优化的目的是
  • 成都集团网站设计推荐南宁百度推广代理公司
  • 自己建的网站如何做海外推广百度知道入口
  • 什么网站可以做调查怎样做app推广
  • 重庆云阳网站建设报价宁波seo软件
  • 网站设计效果专业乐云seo雷神代刷推广网站
  • 重生做网站的小说网站性能优化方法
  • 有创意的网络公司名称某企业网站的分析优化与推广
  • 专业的网站建设设计价格网络营销师是做什么的
  • asp网站开发实验总结百度商家平台登录
  • 株洲网站建设推广报价南昌seo顾问