赋值语句

js实现字符串去重和数组去重

女生的网名这么多〃 提交于 2019-11-26 23:00:21
https://blog.csdn.net/charles_tian/article/details/79938010 题目:实现一个函数,去除输入字符串中的重复字符。 题目:实现一个函数,去除输入数组中重复的元素。 我想这道题是大家经常遇见的吧,是不是好像每次遇到的时候又变的不会了?那是因为不够专注,当初学习的时候知识初浅的看了看答案的思路便不再关注了,这肯定不行,要想在程序员的道路上走的更远,必须得明白解这道题的原理和做法,用了哪些你不知道的方法,甚至是还要比较哪个方法更优,明白更优的这个方法的原理出自哪里,这样才能越走越远。 对于这样的题,网上已经有很多的答案了,这里我只是做个总结,多数部分属于转载,但是希望大家坚持看完,因为要着重理解思路和逻辑,这样才对大家有所帮助。 1)字符串去重 1.for遍历 主要思路:首先新建一个空的字符串,然后声明一个flag作为下文的条件判断,随后就开始for循环输入的字符串,在for循环里面给flag赋值为1,然后在for循环又for循环一次,里面的循环是循环新字符串里的字符,然后给出判断,如果相同,flag=0,且跳出循环,最后对flag进行判断,如果为1,表示循环的字符在新字符串里没有出现过,那么就将该字符添加到新字符串中;如果为0,则不进行处理,直接跳过,最后返回新字符串的值。 该方法不是很推荐,因为执行了两次遍历,比较消耗性能

赋值语句的左值和右值

一笑奈何 提交于 2019-11-26 22:41:15
[ 注意事项 ] 1、左值和右值都是针对表达式而言的 2、左值是指表达式结束后依然存在的 持久 对象,右值是指表达式结束时就不再存在的 临时 对象。 3、区分方法:看能不能对表达式取地址,如果能,则为左值,否则为右值。 [ 测试用例 ] 来源: https://www.cnblogs.com/zhyantao/p/11334261.html

python中的循环以及,continue和break的使用

陌路散爱 提交于 2019-11-26 21:16:56
循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下 ,顺序执行代码 分支 —— 根据条件判断,决定执行代码的 分支 循环 —— 让 特定代码 重复 执行  02. while 循环基本使用 循环的作用就是让 指定的代码 重复的执行 while 循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行 需求 —— 打印 5 遍 Hello Python 思考 —— 如果要求打印 100 遍怎么办? 2.1 while 语句基本语法 初始条件设置 —— 通常是重复执行的 计数器 while 条件(判断 计数器 是否达到 目标次数): 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... 处理条件(计数器 + 1) 注意 : while 语句以及缩进部分是一个 完整的代码块 第一个 while 循环 需求 打印 5 遍 Hello Python # 1. 定义重复次数计数器 i = 1 # 2. 使用 while 判断条件 while i <= 5: # 要重复执行的代码 print("Hello Python") # 处理计数器 i i = i + 1 print("循环结束后的 i = %d"

Python中yield的用法详解

女生的网名这么多〃 提交于 2019-11-26 20:03:49
首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的,最浅显易懂的,我就想问没有有考虑过读者的感受。 接下来是正题: 首先,如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值,返回之后程序就不再往下运行了。看做return之后再把它看做一个是生成器(generator)的一部分(带yield的函数才是真正的迭代器),好了,如果你对这些不明白的话,那先把yield看做return,然后直接看下面的程序,你就会明白yield的全部意思了: def foo(): print("starting...") while True: res = yield 4 print("res:",res)g = foo()print(next(g))print("*"*20)print(next(g)) 就这么简单的几行代码就让你明白什么是yield,代码的输出这个: starting...4********************res: None4 我直接解释代码运行顺序,相当于代码单步调试: 1.程序开始执行以后

awk学习笔记【转】

老子叫甜甜 提交于 2019-11-26 18:35:58
Awk学习笔记 整理:Jims of 肥肥世家 < jims.yang@gmail.com > Copyright © 2004 本文遵从GPL协议,欢迎转载、修改、散布。 第一次发布时间:2004年8月6日 Table of Contents 1. awk简介 2. awk命令格式和选项 2.1. awk的语法有两种形式 2.2. 命令选项 3. 模式和操作 3.1. 模式 3.2. 操作 4. awk的环境变量 5. awk运算符 6. 记录和域 6.1. 记录 6.2. 域 6.3. 域分隔符 7. gawk专用正则表达式元字符 8. POSIX字符集 9. 匹配操作符(~) 10. 比较表达式 11. 范围模板 12. 一个验证passwd文件有效性的例子 13. 几个实例 14. awk编程 14.1. 变量 14.2. BEGIN模块 14.3. END模块 14.4. 重定向和管道 14.5. 条件语句 14.6. 循环 14.7. 数组 14.8. awk的内建函数 15. How-to 1. awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用

C# 中的委托和事件(转)

末鹿安然 提交于 2019-11-26 15:03:52
一篇讲解委托和事件的文章,感觉非常不错,不敢独享,转载出来,希望能给初学者以帮助。 转自 http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx C# 中的委托和事件 引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。 将方法作为方法的参数 我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问候的话语: public void GreetPeople( string name) { // 做某些额外的事情,比如初始化之类,此处略 EnglishGreeting(name); } public void EnglishGreeting( string name) { Console .WriteLine(

为什么类的拷贝构造参数加引用、重载赋值函数的返回值和参数加引用

佐手、 提交于 2019-11-26 14:16:30
class string { public: string(const char *str=NULL); string(const string& str); //copy构造函数的参数为什么是引用呢? string& operator=(const string & str); //赋值函数为什么返回值是引用呢?参数为什么是引用呢? ~string(); }; 下面我就给大家解释一下: class String1 { public: String1(const char*str = "")//默认构造参数//可以不用参数 { m_str = new char[strlen(str) + 1]; strcpy(m_str, str); cout << "create String" << endl; } String1(const String1 &s) { m_str = new char[strlen(s.m_str) + 1]; strcpy(strm_,s.m_str); cout << "copy String" << endl; } String1& operator=(const String1 &s) { delete[] m_str; m_ str = new char[strlen(s.m_str) + 1]; strcpy(m_str, s,m_str);

PL真有意思(四):控制流

我只是一个虾纸丫 提交于 2019-11-26 13:06:34
前言 对大多数计算模型而言,顺序都是基本的东西,它确定了为完成所期望的某种工作,什么事情应该最先做,什么事应该随后做,我们可以将语言规定顺序的机制分为几个类别: 顺序执行 选择 迭代 过程抽象 递归 并发 异常处理和推断 非确定性 对于不同类别的语言对不同类别的控制流的重要性也不尽相同,比如顺序执行相比于函数式对于命令式则更加重要。而命令式中更倾向用迭代,函数则更强调递归 表达式求值 在讨论控制流之前先讨论下表达式的问题,先明确两个概念:运算符通常是指那些采用特殊语法形式的内部函数(比如+-*/等),运算对象指的是运算符的参数(如2+3,2和3就是运算对象),那么运算符和运算对象的组合就是表达式。一般根据运算符出现的位置(相对于运算对象而言),可以分为3类表示形式:前缀、中缀和后缀。比如Lisp就运用前缀语法: (+ 1 3 4 6) (* (+ 1 7) 8) 大多数命令式语言对二元运算符都使用中缀记法,而对一元运算符和其它函数使用前缀激发。但是像Lisp就全部统一使用中缀记法 优先级和结合性 大多数程序设计语言都提供丰富的内部算术。在用中缀方式(没有括号)写出就可能出现歧义。所以就需要优先级和结合性来解决歧义性,但是我觉得 妈的你写括号就完事儿了 而且不同语言的优先级和结合性也不尽相同 赋值 在纯函数式语言中,程序的基本组成部分是表达式,计算也仅是对表达式求值

JS中变量名和函数名重名

好久不见. 提交于 2019-11-26 10:04:36
var a=100; function a(){   console.log(a); } a();// a is not a function 原来 函数声明会置顶 变量声明也会置顶 函数声明比变量声明更置顶 变量和复制语句一起书写,在js引擎解析时,会将其拆成声明和赋值两个部分,声明置顶,赋值保留在原来的位置 声明或的变量不会重复声明 实际上这段代码等同于 var a; //函数声明 var a; //变量声明(实际上这里不会重复声明了) a = function(){ console.log(a); }; //函数赋值 a = 100;//变量赋值(给a重新赋值了) a()//a is not a function 而如果代码会如下写法则a方法会执行 var a; //函数声明 var a; //变量声明(实际上这里不会重复声明了) a = 100; a=function(){console.log(123)}//函数赋值 a()//123      来源: https://www.cnblogs.com/Ewarm/p/11927616.html