- 浏览: 319020 次
- 性别:
- 来自: 西安
最新评论
-
yjq8116:
getString 这个方法你有没有试过,是错误的。这段代码被 ...
ByteBuffer和String的互相转换 -
OnlyForJava:
博主,友情的提醒下,你的Ubuntu写错了
Ubutun上配置hadoop,hbase,zookeeper环境并安装
文章列表
题目:
通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。
输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。
补充说明:
1. 操作数为正整数,不需要考虑计算结果溢出的情况。
2. 若输入算式格式错误,输出结果为“0”。
要求实现函数:
void arithmetic(const char *pInputStr, long lInputLen, char*pOutputStr);
【输入】pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】pOutputStr: 输出字符串, ...
题目描述:
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".
2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"
要求实现函数:
void stringZip(const char *pInputStr ...
去掉字符串中的重复字符
- 博客分类:
- 小小算法
题目:
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串
过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
比如字符串“abacacde”过滤结果为“abcde”。
要求实现函数:
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);
【输入】pInputStr: 输入字符串
lInputLen: 输入字符串长度
【输出】pOutputStr: 输出字符串,空间已经开辟好, ...
Java实现进制之间的转换
- 博客分类:
- 小小算法
@ sourceNum:10进制的源数字
@ baseNum: 目的进制
package com.wjy.algorithm;
import java.util.Stack;
public class SystemTransform {
private int sourceNum;
private int baseNum;
public SystemTransform(int sourceNum,int baseNum){
this.sourceNum=sourceNum;
this.baseNum=baseNum;
}
public vo ...
在计算机中,长整型(long int)变量的范围是 -2147483648 至 2147483647,因此若用长整型变量做乘法运算,乘积最多不能超过 10位数。即便用双精度型(double)变量,也仅能保证 16 位有效数字的精度。在某些需要更高精度的乘法运算的场合,需要用别的办法来实现乘法运算。 比较容易想到的是做多位数乘法时列竖式进行计算的方法,只要写出模拟这一过程的程序,就能实现任意大整数的乘法运算。经过查阅资料,找到一种更易于编程的方法,即“列表法”。 下面先介绍“列表法”: 例如当计算8765 x 234时,把乘数与被乘数照如下列出, ...
#include "StdAfx.h"
#include "subStr.h"
#include<iostream>
using namespace std;
#define MAX_LENTH 201
void sub(int len,int *bigNumA,int *bigNumB){
//以下为执行逐位相减;tag记录进位
int i,tag=0;
for(i=0;i<len;i++){
bigNumA[i]-=bigNumB[i];
if(tag){
bigNumA ...
#include "StdAfx.h"
#include "subStr.h"
#include<iostream>
using namespace std;
#define MAX_LENTH 201
void add(int len,int *bigNumA,int *bigNumB){
//以下为执行加法累加,逐位相加;tag记录进位
int i,tag=0;
for(i=0;i<len;i++){
bigNumA[i]+=bigNumB[i];
if(tag){
b ...
移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。 在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。 三种移位运算符的移动规则和使用如下所示: <<运算规则:按二 ...
C和Java基本数据类型的不同
- 博客分类:
- C语言
1、与C语言不同,JAVA里没有无符号(unsigned)整型。
JAVA的8种基本类型(boolean,byte,short,char,int,long,float,double)都是有符号的。
2、与C语言不同,JAVA里的char类型,占2个字节,专为存放Unicode字符所设计;
3、与C语言不同,JAVA里的boolean只能赋值为true或false,不能直接赋值0或1;
4、与C语言不同,JAVA里的long类型,不是占4字节,而是占8字节。
JAVA与C的不同之处,还有很多:
JAVA中没有指针,其实引用就是指针,但不能进行加减,也没有取值(*)和取地址(& ...
C语言数组初始化全部为0
- 博客分类:
- C语言
例如: int a[15] = {0};
第一种,编译器会把第一个初始化值赋给数组的第一个元素,然后用0赋给其余的元素。如果没有给出初始值,编译器不会去做初始化工作。这样简洁的方式让代码更加高效。
还有一种,就是memcpy函数的使用。例如上面的数组,可以
memcpy(a,0,15);
不过个人在嵌入式的环境下使用,个人建议用第一种,因为感觉使用函
printf函数的一个问题
- 博客分类:
- C语言
看看如下代码,猜猜会打印出什么?
int i=1;
printf("%d %d\n",i++,i++);
输出结果竟然是:
2 1
是不是感到很奇怪?
原因:printf是最右侧的元素先入栈,所以右边的i++中的i先入站占4个字节此时入栈元素为0x00000001,接下来左边的这个i++中的i入栈,此时i已经变成了2(0x00000002)。由于x86是小端存储,所以栈中的情况是这样的:
栈顶 02 00 00 00 01 00 00 00 栈底
输出 ...
C语言中各个数据类型的长度
- 博客分类:
- C语言
C语言的基本数据类型有以下几个:int 整型char 字符型float 单精度浮点型double 双精度浮点型另外,在基本数据类型基础上附加一些限定词, 得到扩充的数据类型。short,long可以应用到整型, unsigned可以应用到整型和字符型:short int(或short) 短整型long int(或long) 长整型unsigned int 无符号整型unsigned short 无符号短整型unsigned long 无符号长整型unsigned char 无符号字符型
strcat的实现原理
- 博客分类:
- C语言
char str[10];
char *p=str;
char* st="tab";
while(*p++ = *st++){ //这里要是*str++ *st++就不对了。因为str是不能移动的。
}
printf("%s\n",str);
int a=5,count=0;
while(--a) count++;
printf("a is%d count is%d\n",a,count);
结果:
a is 0 count is 4
int a=5,count=0;
while(a--) count++;
printf("a is%d count is%d\n",a,count);
结果:
a is -1 count is 5
字符串全排列(permutation)(转)
- 博客分类:
- C语言
问题:给定字符串S,生成该字符串的全排列。
方法1:依次从字符串中取出一个字符作为最终排列的第一个字符,对剩余字符组成的字符串生成全排列,最终结果为取出的字符和剩余子串全排列的组合。