一、JAVA学习总结
这几天对Java进行了简单的学习,对于Java的基本语法有了初步的了解。以下是这几日对Java学习的进度。
1.对Java的认识
这是一门面向对象的语言,可以跨平台使用。跨平台使用Java得益于它拥有虚拟机的机制。
2.对于CMD的学习和使用
学习了CMD常用的操作功能命令。
3.对于idea学习
利用Java完成项目一般需要以下四个步骤:
①创建项目project
②创建模块module
③创建一个包package
④创建一个类class
4.学习Java的基本语法
对照着C语言的语法过完了Java的基本语法,感受其中的差距。例如在Java中数组常以int [ ]arr来定义。并且对于这个数组,可以直接使用arr.length来得到该数组的长度。而Java的一般将函数称为方法,并且方法的调用与C语言也存在差异。最大的差别在我看来还是对于类的使用。
二、题目复盘
1.洛谷P4387验证栈序列
这是一道很典型对于栈的理解的题目
主要的思路基于栈的存储方式,即先入后出的方式。
先奉上代码:
#include<iostream>
using namespace std;
#include<stack>
void zhan()
{
int a[10000];
int b[10000];
int now = 0;
stack<int>s;
int n = 0;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 0; i < n; i++)
cin >> b[i];
for (int i = 0; i < n; i++)
{
if (s.empty())
s.push(a[now++]);
while (s.top() != b[i] && now < n)
s.push(a[now]++);
if (s.top() == b[i])
s.pop();
else
{
cout << "NO" << endl;
return;
}
}
cout << "Yes" << endl;
return;
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
zhan();
return 0;
}
核心在于两个if的判断和while的循环,通过这一步可以将栈顶元素和出栈的元素进行对比,只有全部出栈,代码才会输出“yes”。其思想主要在于如何巧妙的完成对于入栈和出栈的模拟。
2.力扣3.无重复字符的最长子串
这本质上是对于字符串查找和比较的题目。难点在于如何利用下标或者指针做文章。我的代码如下:
int lengthOfLongestSubstring(string s) {
int a = 0;
int b = 0;
char c;
int i = 0;
int j = 0;
int k = 0;
for (i; i < s.size(); i++) {
for (j = k; j < i; j++) {
if (s[j] == s[i]) {
a = 0;
k = j + 1;
i = k;
break;
}
}
a++;
if (a > b) {
b = a;
}
}
return b;
}
对于这道题目,我在对于a和bif的判断卡了很久,起因是我将这个判断放在了关于j的循环的上方,导致a的处理很难受,但突然将这个判断放在其后面,就可以用极短的代码完成操作。难度不高,主要在于思路清不清晰。