数据结构基础训练 数组与字符串

学习重点

1.数组:数组与列表最大的不同点是列表中没有索引,其次数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存;对于数组,计算机会在内存中为其申请一段连续的空间,并且会记下索引为 0 处的内存地址
2.字符串的基本操作对象通常是字符串整体或者其子串;是否可以使用==比较两个字符串取决于所使用的语言是否支持运算符重载
3.使用双指针即使用两个指针分别指向开始和结尾,各自移动,交换数值;第二种双指针方法要注意两个指针的移动时间与移动效果
代码示例

寻找数组的中心索引

public class Solution {
    public int PivotIndex(int[] nums) {
        if(nums.Length == 0)
            return -1;
        int leftSum = 0,rightSum = 0;
        for(int i=0;i<nums.Length;i++)
        {   
            rightSum+=nums[i];
        }
        for(int j=0;j<nums.Length;j++)
        {
            if(j!=0){leftSum+=nums[j-1];}
            rightSum-=nums[j];
            if(leftSum==rightSum){
                return j;
            }
        }
        
        return -1;
    }
}

在这里插入图片描述

最长公共前缀

class Solution {
    public String longestCommonPrefix(String[] strs) {
if (strs.length == 0) 
        return "";
   String prefix = strs[0];
   for (int i = 1; i < strs.length; i++)
       while (strs[i].indexOf(prefix) != 0) {
           prefix = prefix.substring(0, prefix.length() - 1);
           if (prefix.isEmpty()) return "";
       }        
   return prefix;
    }
}

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210315204703743.png

反转字符串

class Solution {
public:
    void reverseString(vector<char>& s) {
        int left=0,right=s.size()-1;
        while(left<right)
        {
            swap(s[left], s[right]);
            ++left;
            --right;
        }
    }
};


在这里插入图片描述

学习心得

通过学习数组,指针发现自己以前有好多好多不会的,大部分的解答都是看下面同学的回答才开始钻研,第一次不熟悉,好好学习,把以前落下的都补上来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值