这一次的学习主要目标是学会数组与字符串的应用,但是第一次接触力扣,我发现其上的教学与我平日里接触的完全不是一个等级,而且在大二上半学期接触的编程较少,导致现在我的编程能力较弱。
在这次数组与字符串的课程学习中,因为知识储备的不足,导致我遇到了许多问题,就例如寻找数组的中心索引这一题,这一题是要求编写一段能返回整数数组 nums“中心下标”的方法。
class Solution {
public:
int pivotIndex(vector<int>& nums) {
for(int i=0;i<nums.size();i++)
{
int left=0,right=0;
for(int j=0;j<i;j++){
left+=nums[j];
}
for(int j=i+1;j<nums.size();j++){
right+=nums[j];
}
if(left==right)
return i;
}
return -1;
}
};
在编写这段程序时,我因为知识的遗忘和不健全遇到了许多问题,甚至因为left和right的定义位置而困惑了许久,这道题最主要的难点是在于right的运算,right的运算我想出了好几种方法,比如先把数组总和赋值给right,再通过left加同时right减来比较,还有就是这段代码中的方法。
因为遗忘,导致我在字符串的教程中一头雾水,只能根据给的解答来一步步的探索,如编写一个函数来查找字符串数组中的最长公共前缀一题。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if (!strs.size()) {
return "";
}
int length = strs[0].size();
int count = strs.size();
for (int i = 0; i < length; ++i) {
char c = strs[0][i];
for (int j = 1; j < count; ++j) {
if (i == strs[j].size() || strs[j][i] != c) {
return strs[0].substr(0, i);
}
}
}
return strs[0];
}
};
这一节的难点在于字符串和数组的融合应用,尤其是在数组的定义上。
经过这次学习,充分暴露了我知识储备的不足与短板,所以在以后的学习中应该多要多动手,不能再拘泥于课本上的理论知识了,通过力扣来提升自己的动手能力。