华为OD机考:0039-0040:url地址、序列描述

0038-url地址

题目描述

给定一个url前缀和url后缀
通过,分割 需要将其连接为一个完整的url
如果前缀结尾和后缀开头都没有/
需要自动补上/连接符
如果前缀结尾和后缀开头都为/
需要自动去重
约束:
不用考虑前后缀URL不合法情况

输入\出描述

url前缀(一个长度小于100的字符串)
url后缀(一个长度小于100的字符串)

样例

 一、
 输入
 /acm,/bb
 输出
 /acm/bb

二、
输入
/abc/,/bcd
输出
/abc/bcd

三、
输入
/acd,bef
输出
/acd/bef

四、
输入
,
输出
/

C++代码

//
// Created by HANWENKE on 2022-09-20.
//
#include <iostream>
#include <string>
#include <vector>
using namespace  std;
int main(){
    string stemp;
    getline(cin,stemp);
    vector<string>res;
    if(stemp.size()==0){
        cout<<"/";
        return 0;
    }
    string temp;
    for(int i=0;i<stemp.size();i++){
        if(stemp[i]==','){
            res.push_back(temp);
            temp.clear();
            i++;
        }
        if((stemp[i]>='A'&&stemp[i]<='Z')||(stemp[i]>='a'&&stemp[i]<='z')){
            temp+=stemp[i];
        }
    }
    if(!temp.empty()){
        res.push_back(temp);
    }
    string sres;
    sres+='/';
    for(int i=0;i<res.size();i++){
        sres+=res[i];
        sres+='/';
    }
    sres.pop_back();
    cout<<sres;
    return 0;
}

0039-序列描述

问题描述

有一个数列A[n]
从A[0]开始每一项都是一个数字
数列中A[n+1]都是A[n]的描述
其中A[0]=1
规则如下
A[0]:1
A[1]:11 含义其中A[0]=1是1个1 即11
表示A[0]从左到右连续出现了1次1
A[2]:21 含义其中A[1]=11是2个1 即21
表示A[1]从左到右连续出现了2次1
A[3]:1211 含义其中A[2]从左到右是由一个2和一个1组成 即1211
表示A[2]从左到右连续出现了一次2又连续出现了一次1
A[4]:111221 含义A[3]=1211 从左到右是由一个1和一个2两个1 即111221
表示A[3]从左到右连续出现了一次1又连续出现了一次2又连续出现了2次1

输入描述

输入n
0<= n <=59

输出

数列内容

样例

输入
5
输出
312211
    
输入
6
输出
13112221

C++代码

//
// Created by HANWENKE on 2022-09-21.
//
#include <iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    string res="1";
    if(n==0){
        cout<<res[0];
        return 0;
    }
    string st;
    for(int i=1;i<=n;i++){
        string next;
        //获取上一个字符的第一个字符
        char last=res[0];
        //记录这个字符出现的次数
        int count=1;
        for(int j=1;j<res.length();j++){
            //如果当前字符等于前面的字符--那么个数就++
            if(res[j]==last)count++;
            else{
                //next和last进行更新
                next+= to_string(count);
                next+=last;
                count=1;
                last=res[j];
            }
        }
        //next加上最后一个的个数+最后一个字符
        string tt= to_string(count);
        next+=tt;
        next+=last;
        res=next;
    }
    cout<<res;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HANWEN KE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值