char

字符流中第一个不重复的字符

限于喜欢 提交于 2020-03-04 10:09:16
题目: 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 如果当前字符流没有存在出现一次的字符,返回#字符。 思路一: 哈希 代码: class Solution : # 返回对应char def __init__ ( self ) : self . s = '' self . dic = { } def FirstAppearingOnce ( self ) : # write code here for i in self . s : if self . dic [ i ] == 1 : return i return '#' def Insert ( self , char ) : # write code here self . s += char if self . s [ - 1 ] not in self . dic : self . dic [ self . s [ - 1 ] ] = 1 else : self . dic [ self . s [ - 1 ] ] += 1 思路二: 数组+队列(也算一种哈希) 代码: class Solution : # 返回对应char def __init__ (

变量赋值(引用) php内核的实现(二)

三世轮回 提交于 2020-03-04 08:28:50
<?php $a=1; $b=&$a; $c=2; $a=&$c; echo $a."\n"; echo $b; 2 1 结论: 首先保存 左值的内存地址, 因这个内存地址会被再次被赋值 1)右值是引用   进入2.2 2.3 2.4步骤   例子: <?php   $a=1;  $c=2;   $b=&$a; //执行到这里时,属于第2种情况   $c=&$a; //执行到这里时,属于第1种情况, 2)右值不是引用,右值的refcount_gc减1   2.1)如果refcount_gc减1,大于0 ,说明有别的变量也共同使用了zval,需要单独分配内存给右值   2.2)将右值(内存地址)赋值给左值   2.3)refcount_gc 加1,并设置 is_ref=1    2.4)销毁左值     2.3.1)将上面保存的左值的zval的refcount_gc减1       2.3.1.1)上面值为0,则zval_dtor       2.3.1.2)上面值大于0,则进入GC buffer, 但zval类型必须为 object或 array    可以发现$a,$b,$c全是CV变量 当php解释器执行到$b=&$a时,会执行到下面的handler static int ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(ZEND

C#字符串操作大全

戏子无情 提交于 2020-03-04 08:17:09
===============================字符串基本操作================================    一、C#中字符串的建立过程     例如定义变量     strT="Welcome to ";     strT+="www.cuit.edu.cn";     程序首先创建一个System.String 类型的对象并初始化为“Welcome to”。此时编译程度会分配足够的内存来保存这个文本串。并用变量strT来表示这个实例。当执行strT+="www.cuit.edu.cn"时,系 统会创建一个新的实例,并分配足够的内存来保存复合后的文本。然后用变量strT来表示这个新的字符串,旧的字符串被撤消。    二、字符串处理     1、从字符串中提取子串     StringBuilder 类没有支持子串的方法,因此必须用String类来提取。(关于StringBuilder 类,文末会提到)     string mystring="My name is ynn.";     //Displays "name is ynn."     Console.WriteLine(mystring.Substring( 3 ));     //Displays "ynn"     Console.WriteLine(mystring

malloc

半世苍凉 提交于 2020-03-04 08:16:13
malloc函数是一种分配长度为num_bytes字节的内存块的函数,可以向系统申请分配指定size个字节的内存空间。中文为动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。 malloc函数原型 extern void *malloc(unsigned int num_bytes); malloc函数头文件 #include <stdlib.h> 或 #include <malloc.h> malloc函数函数声明 void *malloc(size_t size); void* 表示未确定类型的指针,void *可以指向任何类型的数据,更明确的说是指申请内存空间时还不知道用户是用这段空间来存储什么类型的数据。 malloc函数返回值 如果分配 成功 则返回 指向被分配内存的指针 (此存储区中的初始值不确定), 失败 返回 空指针NULL 。当内存不再使用时,应使用 free()函数 将内存块释放。 malloc函数与new的区别 从本质上来说: malloc ( Linux上具体实现可以参考man malloc,glibc通过brk()&mmap()实现 )是libc里面实现的 一个函数 。 如果在source code中没有直接或者间接include<stdlib.h>,那么gcc就会报出error:‘malloc’ was not

java-API之String类型

好久不见. 提交于 2020-03-04 08:11:07
String的特点 字符串不能被继承,被关键字final修饰,因String类是一个最终类。查看源码可知: public final class String{} 字符串不可变性,一旦定义不可修改(长度和值)都不能变,因String类底层维护了一个用关键字final的数组char[],也可以说字符串就是一个常量。参考源码: private final char value[]; String创建对象 String(char[] value) 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。 char[] c = new char[]{'a','b','c'} String str = new String(c); String.valueOf(char[] data) 返回 char 数组参数的字符串表示形式。 public static String valueOf(char data[]) { return new String(data); } 直接给字符串类型的变量赋值,此方法高效,因这种方式的 创建的字符串放在之间的缓存区 中,下次使用可以直接调用 String str1 = "hello"; String str2 = "hello"; // 下面的两次输出,证明str1和str2的内存地址相同,即为同一个字符串对象 System.out

char *p;sizeof(p)=?

一世执手 提交于 2020-03-04 07:51:25
sizeof(指针)是指针变量占用内存的大小(字节数),而指针是存储变量地址的,变量地址的长度即为指针变量所占内存大小,尽管不同类型变量所占内存大小不同(int四字节、char一字节),但指针存的只是首字节地址,不同的是指针递增时,增加的地址。 所以在32位机上,所有指针类型变量占用内存字节数都为4 因为32位机就是 4字节 * 8个二进制位/字节 计算出来的. 如果在64位机上,指针占用内存大小就是8个字节. 也有一种说法,指针是存变量地址,变量地址的长度与编译时使用的编译器有关,一般VS是win32,即32位,所以指针长度一般位4字节(4*8) # include <iostream> using namespace std ; int main ( ) { char c ; char * pc = & c ; int a ; int * pa = & a ; cout << sizeof ( c ) << "\t" << sizeof ( pc ) << "\t" << ( void * ) pc << "\t" ; pc ++ ; cout << ( void * ) pc << endl ; cout << sizeof ( a ) << "\t" << sizeof ( pa ) << "\t" << pa << "\t" << pa ++ << endl ;

教室管理系统(极其简陋)

早过忘川 提交于 2020-03-04 07:41:05
1 #include<bits/stdc++.h> 2 #include<windows.h> 3 #include<conio.h> 4 #include "mmsystem.h"//导入声音头文件 5 #pragma comment(lib,"winmm.lib")//导入声音头文件库 6 // 0 = 黑色 8 = 灰色 7 // 1 = 蓝色 9 = 淡蓝色 8 // 2 = 绿色 A = 淡绿色 9 // 3 = 浅绿色 B = 淡浅绿色 10 // 4 = 红色 C = 淡红色 11 // 5 = 紫色 D = 淡紫色 12 // 6 = 黄色 E = 淡黄色 13 // 7 = 白色 F = 亮白色 14 // 10= 亮绿 15 // 12= 亮红 16 // 控制台前景颜色 17 struct Room 18 { 19 int cap; 20 int c[7][4]; 21 }room[200]; 22 char *sub[]={"无 ","高等数学","英语 ","c语言 ","思修 "}; 23 char *cou[]={"无","高等数学","英语","c语言","思修"}; 24 void set_position(int x,int y,int n,int m)//重置窗口大小 25 { 26 HANDLE hout = GetStdHandle(STD

Linux编程实现DS18B20对树莓派温度的探测

 ̄綄美尐妖づ 提交于 2020-03-04 07:14:00
目录 (一)项目简介 (二)代码以及调试 (三)总结 (一)项目简介 DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点,本次实验项目是依据树莓派对DS18B20 1线温度传感器的支持(一线协议),再通过编程实现温度的探测。 DQ 为数字信号输入/输出端; GND 为电源地; VCC 为外接供电电源输入端; 其中两者端口的连接方式如下: 树莓派 的 ground 端(pin 06脚)------------连接DS18B20的 GND的端口; 树莓派的 gpio 04 端(pin 07 脚)--------------连接DS18B20的 DQ的端口; 树莓派的 3.3V 端(pin 01脚)-------------连接DS18B20的 VCC端口; (二)代码以及调试 1.通过SecurtCRT远程登录到树莓派服务器上,并找到该文件所在的位置,如下图在根目录下的w1_slave文件中: 先调用 open() , read() , close() 三个基本的文件I/O函数进行文件内容的读取: int main ( int argc , char * * argv ) { int fd ; char buf [ 128 ] ; fd = open ( "/sys/bus/w1/devices/28-041731f7c0ff

『JavaSE』数据类型

微笑、不失礼 提交于 2020-03-04 06:53:59
Java里面包含8个基本数据类型,分别是:boolean、byte、char、short、int、float、douboe、long。 整型变量 byte 占用存储空间:1字节,8位; 表示范围:[-128~127]; 表示:byte num = 1; short 占用存储空间:2字节,16位; 表示范围:[-32768-32767]; 表示:short num = 1; int 占用存储空间:4字节,32位; 表示范围:[-2^31, 2^31 - 1]; 表示:int num = 1; long 占用存储空间:8字节,64位; 表示范围:[-2^63, 2^63 - 1]; 表示:long num = 1l或long num = 1L;建议使用大写L,小写容易误认为数字1; 浮点类型 float 占用存储空间:4字节,32位; 表示范围:-3.403E38~3.403E38; 表示:float num = 1f或float num = 1F; double 占用存储空间:8字节,64位; 表示范围:-1.798E308~1.798E308; 表示:double num = 1.0; 默认是double. 浮点数存在误差,所以在比较中尽量避免使用浮点数,如 float num1 = 0.1f ; double num2 = 1.0 / 10 ; System . out .

编写函数:char *strstr(char *str, char *substr),如果指定字符串是str字符串的元素,返回元素所在的首地址,否则,返回NULL。

自作多情 提交于 2020-03-04 06:45:40
# include <stdio.h> char * strstr ( char * str , char * substr ) { char * pb , * ps ; while ( * str ) { pb = str ; ps = substr ; while ( * ps ) { if ( * pb == * ps ) { pb ++ ; ps ++ ; } else { break ; } } if ( * ps == 0 ) { return str ; } str ++ ; } return NULL ; } void main ( ) { char s1 [ 100 ] = "AABCD123ABCD123ABCDA" ; char s2 [ 100 ] = "123" ; printf ( "%s" , strstr ( s1 , s2 ) ) ; } 来源: CSDN 作者: 轻松的小希 链接: https://blog.csdn.net/qq_38490457/article/details/104639353