文档章节

Cracking the Coding Interview Q1.4

jdflyfly
 jdflyfly
发布于 2014/04/08 21:34
字数 253
阅读 119
收藏 1

My Solution:

package chapter1;

/**
 * Write a method to replace all spaces in a string with ‘%20’. (Assume string
 * has sufficient free space at the end)
 * 
 * @author jd
 * 
 */
public class Q1_4 {

    /**
     * 1. Count the number of spaces during the first scan of the string. 
     * 2.Parse the string again from the end and for each character: 
     * if a space is encountered, store '%20';
     * else store the character as it is in the newly shifted location.
     */
    public static void replaceSpaces(char[] str, int length) {
        if (str == null)
            return;
        int spaceCount = 0;
        for (int i = 0; i < str.length; i++) {
            if (str[i] == ' ')
                spaceCount++;
        }
        int newLength = length + 2 * spaceCount;
        for (int i = length - 1, j = newLength - 1; i >= 0 && j >= 0; i--) {
            if (str[i] != ' ') {
                str[j--] = str[i];
            } else {
                str[j--] = '0';
                str[j--] = '2';
                str[j--] = '%';
            }

        }

    }

    public static void main(String[] args) {
        String str = "abc d e f";
        char[] arr = new char[str.length() + 3 * 2 + 1];
        for (int i = 0; i < str.length(); i++) {
            arr[i] = str.charAt(i);
        }
        replaceSpaces(arr, str.length());
        System.out.println("\"" + new String(arr) + "\"");
    }
}


Solution:

public static void replaceSpaces(char[] str, int length) {
		int spaceCount = 0, index, i = 0;
		for (i = 0; i < length; i++) {
			if (str[i] == ' ') {
				spaceCount++;
			}
		}
		index = length + spaceCount * 2;
		str[index] = '\0';
		for (i = length - 1; i >= 0; i--) {
			if (str[i] == ' ') {
				str[index - 1] = '0';
				str[index - 2] = '2';
				str[index - 3] = '%';
				index = index - 3;
			} else {
				str[index - 1] = str[i];
				index--;
			}
		}
	}


© 著作权归作者所有

jdflyfly
粉丝 5
博文 115
码字总数 30127
作品 0
杭州
程序员
私信 提问
java:数据结构(二)栈的应用(括号匹配)

一.什么是括号匹配: 括号匹配就是利用计算机辨别表达式里面的括号是否书写成功 例如: {()((a)) }这就是一个正确 (()()  这就是一个错误的 二.括号匹配的算法: 众所周知,括号...

dark_Souls
02/18
0
0
[Leetcode] Balanced Binary Tree

问题:给一个二叉树,写一个算法判断这个树是不是balanced。 Solution #1. 第一次遇到这个问题时我的解法,如下: public class Solution { } 写了一个getDepth()函数,访问每个节点都要调用...

群星纪元
04/18
6
0
Cracking the Coding Interview Q1.1

My Solution: package chapter1; /** * Implement an algorithm to determine if a string has all unique characters. * What if you can not use additional data structures? * * @author......

jdflyfly
2014/04/08
56
0
Cracking the Coding Interview Q1.3

My Solution: package chapter1; /** * Write a method to decide if two strings are anagrams or not. * * @author jd * /public class Q1_3 { /* * Assume the char set is extended ASCI......

jdflyfly
2014/04/08
19
0
Cracking the Coding Interview Q1.2

My Solution: #include<stdio.h> include<string.h> /** * reverse the string in place. /void reverse(char str) {if (str == NULL)return;int n = strlen(str);char tmp;//be careful: i<......

jdflyfly
2014/04/08
16
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Alibaba 实战(二) - 关于Spring Boot你不可不知道的实情

0 相关源码 1 什么是Spring Boot 一个快速开发的脚手架 作用 快速创建独立的、生产级的基于Spring的应用程序 特性 无需部署WAR文件 提供starter简化配置 尽可能自动配置Spring以及第三方库 ...

JavaEdge
今天
7
0
TensorFlow 机器学习秘籍中文第二版(初稿)

TensorFlow 入门 介绍 TensorFlow 如何工作 声明变量和张量 使用占位符和变量 使用矩阵 声明操作符 实现激活函数 使用数据源 其他资源 TensorFlow 的方式 介绍 计算图中的操作 对嵌套操作分层...

ApacheCN_飞龙
今天
7
0
五、Java设计模式之迪米特原则

定义:一个对象应该对其他对象保持最小的了解,又叫最小知道原则 尽量降低类与类之间的耦合 优点:降低类之间的耦合 强调只和朋友交流,不和陌生人说话 朋友:出现在成员变量、方法的输入、输...

东风破2019
昨天
23
0
jvm虚拟机结构

1:jvm可操作数据类型分为原始类型和引用类型,因此存在原始值和引用值被应用在赋值,参数,返回和运算操作中,jvm希望在运行时 明确变量的类型,即编译器编译成class文件需要对变量进行类型...

xpp_ba
昨天
5
0
聊聊nacos Service的processClientBeat

序 本文主要研究一下nacos Service的processClientBeat Service.processClientBeat nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/core/Service.java public class Service ex......

go4it
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部