[Java] 58.2 左旋转字符串

描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

示例

输入:"abcXYZdef",3
返回值:"XYZdefabc"

解题

public class Solution {
    public String LeftRotateString(String str,int n) {
        int length = str.length();
        if (length < 1)
            return "";
        int j = n % length;
        StringBuilder sb = new StringBuilder(str.substring(j));
        sb.append(str.substring(0,j));
        return sb.toString();
    }
}

解题2

public class Solution {
    public String LeftRotateString(String str,int n) {
        int length = str.length();
        if (length < 1)
            return str;
        char[] chars = str.toCharArray();
        swop(chars, 0, n-1);
        swop(chars, n, length-1);
        swop(chars, 0, length-1);
        return new String(chars);
    }
    
    private void swop(char[] c, int n, int i) {
        while (n < i) {
            char a = c[n];
            c[n] = c[i];
            c[i] = a;
            n++;
            i--;
        }
    }
}

经过对比我发现,其实第一种方法比较快,占用的内存也少。其实两种差不多吧,我没有发现特别需要注意的地方,我比较建议第一种方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过以下步骤来实现: 1. 连接超声波模块和电机驱动模块到Arduino开发板上。超声波模块需要连接到开发板的数字引脚,电机驱动模块需要连接到开发板的PWM引脚。 2. 编写程序,通过超声波模块测量距离,根据距离控制电机的转动。具体实现可以使用Arduino的pulseIn函数来读取超声波模块的输出信号,然后根据距离控制电机的转速。 3. 将程序上传到Arduino开发板上,然后将超声波模块和电机驱动模块连接到外部电源。 4. 测试程序,观察电机的转动是否与超声波测量的距离有关。 以下是一个简单的示例代码,仅供参考: ``` #define trigPin 9 #define echoPin 10 #define motorPin 3 void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(motorPin, OUTPUT); Serial.begin(9600); } void loop() { long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration / 58.2; Serial.print(distance); Serial.println(" cm"); if (distance > 20) { analogWrite(motorPin, 0); } else { analogWrite(motorPin, 255); } delay(100); } ``` 在这个示例代码中,我们使用了一个超声波模块,它的Trig引脚连接到Arduino的数字引脚9,Echo引脚连接到数字引脚10。我们还使用了一个电机驱动模块,它的控制引脚连接到Arduino的PWM引脚3。 在loop函数中,我们首先使用超声波模块读取距离,并将距离打印到串口监视器中。然后根据距离控制电机的转速:如果距离大于20厘米,则电机停止转动;如果距离小于等于20厘米,则电机以最大速度(255)转动。最后,我们在每次循环结束时延迟100毫秒。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值