在c语言里 字符串拆分,在C ++中拆分连接的字符串

假设我们有一个字符串列表,我们可以将这些字符串连接在一起形成一个循环,对于每个字符串,我们可以选择是否反转它。在所有可能的循环中,我们需要在剪切循环后找到按字典顺序排列的最大字符串,这将使循环后的字符串成为规则的字符串。具体来说,要找到词典上最大的字符串,我们需要经历两个阶段-

将所有字符串连接到一个循环中,在这里我们可以反转某些字符串,也可以不反转它们,并按给定的顺序连接它们。

在循环的任何位置剪切并创建一个剪切点,这将使循环的字符串从剪切点处的角色开始成为规则的字符串。这项工作是在所有可能的常规字符串中找到字典上最大的字符串。

因此,如果输入像“ abc”,“ xyz”,那么输出将是“ zyxcba”,因为我们可以得到像“ -abcxyz-”,“-abczyx-”,“-cbaxyz-”,“ -cbazyx-”,其中的“-”代表循环状态。答案字符串来自第四个循环的字符串,我们可以从中间字符“ a”处截取并得到“ zyxcba”。

为了解决这个问题,我们将遵循以下步骤-定义一个函数solve(),它将使用idx,数组strs,rev,

temp:= strs [idx]

如果rev非零,则-反转阵列温度

str1:=空字符串

str2:=空字符串

对于初始化i:= 0,当i

对于初始化i:= idx + 1,当i

对于初始化k:= 0,当k

newOne:=从索引k到末尾的温度子串串联str2串联str1串联从索引(0到k-1)的温度子串

如果ret为空或ret

定义一个函数findMax(),它将接受一个数组strs,

对于初始化i:= 0,当i

反转阵列温度

strs [i]:=(如果strs [i]> temp,则为strs [i],否则为temp)

从主要方法中执行以下操作-

ret:=空字符串

findMax(strs)

对于初始化i:= 0,当i

解决(i,strs,true)

返回ret

示例

让我们看下面的实现以更好地理解-#include 

using namespace std;

class Solution {

public:

string ret;

void solve(int idx, vector  strs, bool rev){

string temp = strs[idx];

if (rev)

reverse(temp.begin(), temp.end());

string str1 = "";

string str2 = "";

for (int i = 0; i 

str1 += strs[i];

for (int i = idx + 1; i 

str2 += strs[i];

for (int k = 0; k 

string newOne = temp.substr(k) + str2 + str1 + temp.substr(0, k);

if (ret == "" || ret 

ret = newOne;

}

}

}

void findMax(vector& strs){

for (int i = 0; i 

string temp = strs[i];

reverse(temp.begin(), temp.end());

strs[i] = strs[i] > temp ? strs[i] : temp;

}

}

string splitLoopedString(vector& strs) {

ret = "";

findMax(strs);

for (int i = 0; i 

solve(i, strs, false);

solve(i, strs, true);

}

return ret;

}

};

main(){

Solution ob;

vector v = {"abc", "xyz"};

cout <

}

输入项{"abc", "xyz"}

输出结果zyxcba

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值