【简单】1370. 上升下降字符串

643 篇文章 5 订阅

【题目】
给你一个字符串 s ,请你根据下面的算法重新构造字符串:
1、从 s 中选出 最小 的字符,将它 接在 结果字符串的后面
2、从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。
3、
来源:leetcode
链接:https://leetcode-cn.com/problems/increasing-decreasing-string/
【示例1】
输入:s = “aaaabbbbcccc”
输出:“abccbaabccba”
解释:第一轮的步骤 1,2,3 后,结果字符串为 result = “abc”
第一轮的步骤 4,5,6 后,结果字符串为 result = “abccba”
第一轮结束,现在 s = “aabbcc” ,我们再次回到步骤 1
第二轮的步骤 1,2,3 后,结果字符串为 result = “abccbaabc”
第二轮的步骤 4,5,6 后,结果字符串为 result = “abccbaabccba”
【示例2】
输入:s = “rat”
输出:“art”
解释:单词 “rat” 在上述算法重排序以后变成 “art”
【示例3】
输入:s = “leetcode”
输出:“cdelotee”
【示例4】
输入:s = “ggggggg”
输出:“ggggggg”
【示例5】
输入:s = “spo”
输出:“ops”
【提示】
1 <= s.length <= 500
s 只包含小写英文字母。
【思路】
1、先对字符串进行排序,排成从小到大的顺序
2、设置一个visit数组,来判断该字符串的每一位被访问(这里的访问并不是字面意上的访问,而是)情况,如果visit[i]=0则表明该位没有被访问,否则该位被访问。
3、设置计数器cnt=0,用来记录被访问的字符的个数,设置maxlen为字符串的长度
4、函数主体由一个while循环组成,当cnt!=maxlen的时候一直执行循环体,直到cnt==maxlen为止退出循环
5、循环体由两个部分组成,两个for循环,一个从左到右,一个从右到左,正好满足题目要求。
【代码】

class Solution {
public:
    int visit[500]={0};
    string str[26]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o"
    ,"p","q","r","s","t","u","v","w","x","y","z"};
    string sortString(string s) {
        char pre=' ';
        string rs="";
        int cnt=0,maxlen=s.size();
        sort(s.begin(),s.end());
        while(cnt!=maxlen){
            pre=' ';
            for(int i=0;i<maxlen;i++)//从左到右
                if(visit[i]==0&&s[i]!=pre){
                    pre=s[i];
                    visit[i]=1;
                    rs+=str[s[i]-'a'];
                    cnt++;
                }
            if(cnt==maxlen)            
                break;
            pre=' ';
            for(int i=maxlen-1;i>=0;i--)//从右到左
                if(visit[i]==0&&s[i]!=pre){
                    pre=s[i];
                    visit[i]=1;
                    rs+=str[s[i]-'a'];
                    cnt++;
                }
        }
        return rs;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用ArrayList的add方法来添加字符串,例如: ArrayList<String> list = new ArrayList<>(); list.add("字符串1"); list.add("字符串2"); list.add("字符串3"); 其中,ArrayList<String>表示创建一个存储字符串类型的ArrayList对象,add方法用于向ArrayList中添加元素。 ### 回答2: ArrayList是Java中的一种动态数组,可以存储任意类型的数据。在使用ArrayList时,我们经常会有向其添加字符串的需求。ArrayList提供了一个add方法,可以在指定的位置添加指定的元素。在使用add方法添加字符串时,我们需要注意一些细节。 首先,我们需要创建一个ArrayList对象。可以使用如下的代码创建一个空的ArrayList: ``` ArrayList<String> list = new ArrayList<String>(); ``` 这里的`<String>`表示我们要创建一个存储字符串的ArrayList。如果要存储其他类型的数据,可以将`<String>`替换为相应的类型。 接下来,我们可以使用`add`方法向ArrayList中添加元素。`add`方法的语法如下: ``` public boolean add(E e) ``` 其中,`E`表示要添加的元素的数据类型。例如,如果要添加一个字符串,应该使用`add`方法的一个重载版本: ``` public boolean add(String e) ``` 例如,我们可以使用如下的代码向ArrayList中添加字符串: ``` list.add("hello"); list.add("world"); ``` 这样就向ArrayList中添加了两个字符串"hello"和"world"。 需要注意的一点是,ArrayList中的元素是按照添加的顺序依次存储的。因此,如果我们想要按照某个规则对字符串进行排序,需要先将其添加到ArrayList中,然后再使用Java提供的排序算法进行排序。例如,可以使用如下的代码对ArrayList中的字符串进行排序: ``` Collections.sort(list); ``` 这个代码使用Java自带的排序算法对ArrayList进行排序。 总之,在使用ArrayList时,我们可以使用add方法添加字符串,并且可以使用Java提供的排序算法对其进行排序。希望这些信息对您有所帮助。 ### 回答3: ArrayList是Java中的一个数据结构,并且是一个动态数组,允许我们在数组中添加、删除、查找和修改元素。常见的操作之一就是使用ArrayList.add方法向其中添加元素。 如果我们要在ArrayList中添加字符串,可以用ArrayList.add方法来实现。例如,我们有一个名为list的ArrayList对象,并想在其中添加字符串“apple”,可以使用以下代码: ArrayList<String> list = new ArrayList<String>(); list.add("apple"); 这样,我们就可以在ArrayList对象list的末尾添加了一个字符串元素"apple"。 如果我们想要向ArrayList对象中添加多个字符串,可以使用多个add方法。例如: ArrayList<String> list = new ArrayList<String>(); list.add("apple"); list.add("banana"); list.add("orange"); 以上代码将在list对象中添加了三个字符串元素,分别为"apple","banana"和"orange"。 除了添加,我们还可以使用其他ArrayList方法来操作数组中的元素,例如: 1. ArrayList.get(index):获取指定位置的元素; 2. ArrayList.remove(index):删除指定位置的元素; 3. ArrayList.set(index, element):替换指定位置的元素。 总之,通过ArrayList.add方法,我们可以方便地向ArrayList对象中添加字符串,这使得我们的编程更加简单和高效。在实际应用中,可能会涉及到对其他数据类型如整型、浮点型的添加,但基本方法的使用方式与添加字符串类似。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值