记录D5-23.5.20

今天忙了别的事情,没什么时间做题

LC344 反转字符串

很简单的题目,s的size为n,遍历前n/2,然后将第一个和最后一个位置交换,以此类推,没什么好说的,非常简单的一道题目。
里面的交换部分可以有以下解法

char temp=s[i];
s[i]=s[n-1-i];
s[n-1-i]=temp;

也可以用位运算

s[i] ^= s[j];
s[j] ^= s[i];
s[i] ^= s[j];

LC541 反转字符串2

就是分段考虑,在每2k个字符中,反转前k个,后k个不动。这里唯一需要考虑的就是最后一次的2k的范围,所以要判断i+k是否超出了s.size()的范围。

class Solution {
public:
    void reverse(string& s,int start, int end){
        for(int i=start, j=end-1;i<j;i++,j--){
            swap(s[i],s[j]);
        }
    }
    string reverseStr(string s, int k) {
        int i;
        for(i=0;i<s.size();i+=(2*k)){
            if(i+k<s.size()){
                reverse(s, i, i+k);
            }else{
                reverse(s, i, s.size());
            }
        }
        return s;
    }
};

LC剑指05 替换空格

要点就是先统计原字符串中有多少个空格,然后对字符串的长度重新调整,变为s.size()+2*n。
然后倒叙,也就是从最后往前进行覆写,这样就方便就一个字符长度的空格改为三个字符长度的"%20"

class Solution {
public:
    string replaceSpace(string s) {
        int oldSize=s.size();
        int count=0;
        for(auto c:s){
            if(c==' '){
                count++;
            }
        }
        s.resize(oldSize+2*count);
        int newSize=s.size();
        int left=oldSize-1;
        int right=newSize-1;
        while(left<right){
            if(s[left]!=' '){
                s[right]=s[left];
            }else{
                s[right]='0';
                s[right-1]='2';
                s[right-2]='%';
                right-=2;
            }
            left--;
            right--;
        }
        return s;
    }
};
1panel.service bluetooth.target.wants clamav-daemon.service.d cloud-final.service.wants cloud-init.target.wants dbus-fi.w1.wpa_supplicant1.service dbus-org.bluez.service dbus-org.freedesktop.Avahi.service dbus-org.freedesktop.ModemManager1.service dbus-org.freedesktop.nm-dispatcher.service dbus-org.freedesktop.oom1.service dbus-org.freedesktop.resolve1.service dbus-org.freedesktop.thermald.service dbus-org.freedesktop.timesync1.service display-manager.service display-manager.service.wants docker.service emergency.target.wants final.target.wants getty.target.wants graphical.target.wants hibernate.target.wants hybrid-sleep.target.wants multi-user.target.wants network-online.target.wants nvidia-cdi-refresh.path nvidia-cdi-refresh.service oem-config.service.wants ollama.service paths.target.wants printer.target.wants rescue.target.wants sleep.target.wants snap-bare-5.mount snap.canonical-livepatch.canonical-livepatchd.service 'snap-canonical\x2dlivepatch-364.mount' 'snap-canonical\x2dlivepatch-372.mount' snap-clion-401.mount snap-code-214.mount snap-core-17247.mount snap-core20-2682.mount snap-core22-2139.mount snap-core22-2163.mount snap-core24-1196.mount snap-core24-1225.mount snap-cups-1127.mount snap-cups-1130.mount snap.cups.cups-browsed.service snap.cups.cupsd.service snap-curl-2351.mount snap-curl-2369.mount snapd.mounts.target.wants snap-firefox-7355.mount snap-firefox-7423.mount 'snap-firmware\x2dupdater-210.mount' 'snap-firmware\x2dupdater-216.mount' snap-freecad-1248.mount snap-freecad-1634.mount 'snap-gaming\x2dgraphics\x2dcore22-184.mount' 'snap-gaming\x2dgraphics\x2dcore24-13.mount' 'snap-gnome\x2d42\x2d2204-202.mount' 'snap-gnome\x2d42\x2d2204-226.mount' 'snap-gtk\x2dcommon\x2dthemes-1535.mount' 'snap-kf5\x2d5\x2d108\x2dqt\x2d5\x2d15\x2d10\x2dcore22-5.mount' 'snap-kf5\x2dcore22-3.mount' snap-snapd-25202.mount snap-snapd-25577.mount 'snap-snapd\x2ddesktop\x2dintegration-253.mount' 'snap-snapd\x2ddesktop\x2dintegration-315.mount' 'snap-snap\x2dstore-1173.mount' 'snap-snap\x2dstore-1270.mount' snap-steam-218.mount snap-steam-231.mount sockets.target.wants sshd-keygen@.service.d sshd.service ssh.service.requires sssd.service.wants suspend.target.wants suspend-then-hibernate.target.wants sysinit.target.wants syslog.service sysstat.service.wants systemd-hibernate.service.wants systemd-suspend.service.wants systemd-suspend-then-hibernate.service.wants timers.target.wants todeskd.service vncserver.service 帮我分析一下有哪些不必要
12-07
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值